c语言递归例子
A. c语言函数递归调用
我给你举个简单的例子你就明白了,你可以假设n=3
然后代入这个函数,a(3)=a(2)+5;而a(2)=a(1)+5;a(1)=1
所以最后就是a(3)=1+5+5=11…
同理你可以算出a(10)=1+5*9=46
满意请采纳
B. C语言迭代与递归比较(举例)
我举个例子:
①斐波那契数列:1,1,2,3,5,8,13,21,34......
迭代:int Fib[N];
Fib[0]=1;Fib[1]=1;
for(i=2;i<N;i++)
Fib[i]=Fib[i-1]+Fib[i-2];
}
递归:int Fib(int n)
{ if(n==0||n==1)return 1;
else return (Fib(n-1)+Fib(n-2));
}
C. C语言中递归调用的实例以及讲解。
下面演示一个斐波那契数列前N项和#include <stdio.h>
#define COL 10 //一行输出10个
long scan()
{ //输入求fibonacci函数的第N项
int n;
printf("Input the N = ");
scanf("%d",&n);
return n;
}
long fibonacci(int n)
{ //fibonacci函数的递归函数
if (0==n||1==n) { //fibonacci函数递归的出口
return 1;
}
else {
return fibonacci(n-1)+fibonacci(n-2);
//反复递归自身函数直到碰到出口处再返回就能计算出第n项的值
}
}
int main(void)
{
int i,n;
n = scan();
printf("Fibonacci数列的前%d项\n", n);
for (i=0; i<n;) //输出fibonacci函数前n项每项的值
{
printf("%-10ld",fibonacci(i++)); //调用递归函数并且打印出返回值
if(i%COL==0)
{ //若对COL取余等于0就换行,也就是控制每行输出多少个,
//而COL=10就是每行输出10个
printf("\n");
}
}
printf("\n");
return 0;
}
D. c语言类函数递归调用的简单例子有哪些
=#include <stdio.h>
/// 求阶乘函数
/// 递归思想
/// n! = n * (n-1) * (n-2) * ... * 1
/// n! = n * [(n-1) * (n-2) * ... * 1]
/// n! = n * (n-1)! 递归方程
/// 这是递归实现
unsigned Factorial(unsigned int n)
{
if (n == 0) return 1; // 对于0的阶乘,当n=0时,递归返回
return n * Factorial(n-1); // 递归调用
}
void main()
{
int n = 3;
printf("3! = %d",Factorial(n));
}
E. 用C语言编写一个递归函数
int findf( int n ){
int a,b,c;
b = n % 2;
c = 0;
if ( n>4){
if (b==c){
a=findf( n-1 ) + findf( n-3 );
}
else{
a=findf( n-2 ) + findf( n-4 );
}
return a;
}
else if ( n < 0){
return -1;
}
else{
return 1;
}
}
F. c语言递归求阶乘
举例:用递归方法求n;
#include<stdio.h>
int main()
{
int n;
int y;
printf("input a integer number:");
scanf("%d",&n);
y=fac(n);
printf("%d!=%d ",n,y);
return 0;
}
int fac(int n)
{
int f;
if(n<0)
printf("n<0,data error!");
else if(n==0||n==1)
f=1;
else
f=fac(n-1)*n;
return(f);
}
(6)c语言递归例子扩展阅读:
return用法:
return返回一个数值的意思就是把return<表达式>后面表达式的值返回给调用他的函数。举个例子:
int sum(int i,int j)
{
return i+j;
printf("这个语句不会被执行,因为该子函数执行到上面的return语句就无条件结束了");
}
main()
{
int a=10,b=11,c;
c=sum(a,b);
printf("%d",c);
}
程序的输出为:
21
这个21从何而来呢main函数调用sum(a,b)函数时将a的值赋给i,b的值赋给j,上面说了return i+j;会计算i+j的值也就是结果等于21,并将21带回给调用它的函数,即c=sum(a,b);相当于c=21,这个21就是由sum(a,b)中的return反回来的。
G. c语言 函数递归调用的简单例子
举一个用递归调用函数求输入非负整数的阶乘的例子,如下:
//#include"stdafx.h"//Ifthevc++6.0,withthisline.
#include"stdio.h"
intfact(intn){
if(n==1||n==0)return1;
elsereturnn*fact(n-1);
}
intmain(void){
intx;
while(1){
printf("Inputx(int12>=x>=0)... x=");
if(scanf("%d",&x),x>=0&&x<=12)//x>12时会使结果溢出
break;
printf("Error,redo:");
}
printf("%d!=%d ",x,fact(x));
return0;
}
H. 讲一下c语言中递归函数的使用方法
递归函数有三点要求:
1,递归的终止点,即递归函数的出口
2,不断的递归调用自身
3,递归函数主体内容,即递归函数需要做的事情
ps:3一般可以放在2的前面或者后面,一般1放最前面。另外,2和3可以根据不同的需要合并,比如,有时候递归函数的主体就是返回调用下层函数所得到的结果。
具体例子如下:
voidfun(intn)
{
if(n<=0)return;//1这是递归的终点,即出口
fun(n-1);//2、递归函数自身的调用
cout<<n<<endl;//3递归函数的主体内容
}
2,3合并的情况
intfun(intn)
{
if(n<=0)return0;
returnfun(n-1)+fun(n-2);//23合并
}
I. C语言中的递归是什么意思
程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。
递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。
(9)c语言递归例子扩展阅读:
递归的应用
1、数据的定义是按递归定义的。(Fibonacci函数)
2、问题解法按递归算法实现。这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单,如Hanoi问题。
3、数据的结构形式是按递归定义的。
递归的缺点
递归算法解题相对常用的算法如普通循环等,运行效率较低。因此,应该尽量避免使用递归,除非没有更好的算法或者某种特定情况,递归更为适合的时候。在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。
J. c语言,求递归算法的技巧最好有经典例子!
c语言中递归的最经典应用是求两个数的最小公约数,代码如下:
int MinDivisor( int m, int n)
{
if(m%n==0)
return n;
else
return MinDivisor(n, m%n);
}