Ⅰ c语言 递归调用 解说
这个递归函数
的功能
是
传入的值
如果为
1
那么
就返回1
如果不为1
那么执行递归
a
=
n+f(n-1)其实
就是
执行
f(n-1)
return
a永远都不会执行
因为
如果
传入的N不等于1
就一直调用f
直到等于1的时候
返回1
Ⅱ c语言函数的递归调用
递归有一个堆栈的概念,那就意味着他是一个反理解的过程:就象数学递推一样,你知道第一项,第二项,又知道通项公式,那你就可以知道任何一项。
然后你看代码:fun(0)==0,fun(1)==1;是告诉你一二项。
fun(n)==fun(n-1)+fun(n-2);是告诉你通项公式。那么,你就可以知道任何一项。你这样理解就差不多了,具体机器是怎么操作的,那很复杂的,也不需要明白!!!!
Ⅲ C语言的递归调用
int fun()。。。。。。。。。。。。。。。。1
{
……
fun(); 。。。。。。。。。。。。。。。2 // 递归调用,进入下一层,回到1
if(……) // 返回条件
return …… ;。。。。。。。。。。。。3 // 返回到上一层的2,继续往下执行
}
注意一定要有返回条件,否则只有递推,没有回溯,永远跳不出来,变成死循环。
Ⅳ C语言递归调用
答案就应该是 1
22
333
4444
55555
这正是由于递归调用的结果首先是n=5,即执行f(5)由于n!=0,故有执行f(5-1),由于5-1=4!=0,故执行f(4-1);由于4-1=3!=0;故执行f(3-1)……,直至f(1-1);由于1-1=0,可以直接结束fun(0);接着执行后面的printf函数,当然就得到了上述结果。
Ⅳ C语言 递归的调用
感觉输出结果好像不对,因为for(k=1;k<i;k++)这里的k是从1开始的,而递归的最底层是n=5的时候,i为1,这样printf("*");就不会执行,而是直接执行printf("n=%d\n",n); 所以第一行输出应该是n=5,而前面没有*,以后每一行也应该少一个*。
递归函数是通过栈来实现的。
return i这句话中i已经和上层的调用中使用的i不是同一个变量了,所以i=f(n+1)*n;这句话在调用时,是吧当前的n+1后的值传给f,而这个f中所有用到的局部变量都是另外一套,与原函数已经无关,当f计算完成后,直接返回他该返回的值,这个时候控制才回到上层,把返回值再*上层的n然后赋值给i
Ⅵ C语言中递归调用是什么怎么回事。。
写一个函数,在这个函数里呢调用自己本身这个函数,直到符合某个条件为止,然后一层一层返回出来,这样的函数调用就叫递归调用
比如说,第一数是2,第二个数是第一个的4倍,第三个是第二个的4倍,依次到第十个数,请问第十个数是多少,就可以用递归了
Ⅶ C语言题!这个题什么意思 允许直接递归调用和允许间接递归调用什么意思这题分析下!
递归就是重复调用某一函数最终达到运算结果。a函数里面直接调用a函数叫做直接递归调用;a函数里调用b函数,b函数里再调用a函数就是间接递归调用。
Ⅷ c语言函数的递归调用
递归必须满足两个条件:1.初始条件;2.递归函数.举个例子,求阶乘:有f(1)=1;f(n)=n*f(n-1)(n≥2)现在你可以实现如下:long func(int n)//定义函数
{
long f,s=0;
if(n==1)f=1;
else
{
f=func(n-1)*n; //这里就是一个递归的过程,自身调用自身
s=s+f;
}
return s;
} 假设你现在是求3!执行过程就是:f(3)=f(2)*3;然后调用自身:f(2)=f(1)*2;在调用遇到初始条件:f(1)=1;则f(3)=1*2*3=6
Ⅸ C语言函数的递归调用
先调用函数f,然后把返回值赋值给z。不过这个函数不对,没有退出条件,无法停止。举例说明吧
int f(int x)
{
if(x==0)
{
return 1;
}
else
{
return x*f(x-1);
}
}
假如f(3)
那么
第一次f(3):x!=0,调用f(2)
第二次f(2):x!=0,调用f(1)
第三次f(1):x!=0,调用f(0)
第四次f(1):x==0,返回1
返回第三次调用f(1):返回1*1=1;
返回第二次调用f(2):返回2*1=2;
返回第一次调用f(3):返回3*2=6;
f(3)的结果为6
Ⅹ 一道简单的c语言,它是如何实现递归调用的
#include<stdio.h>
void f(int x);
void main()
{
int a;
scanf("%d",&a);
f(a);
}
void f(int x)
{
int i;
if((i=x/10)!=0)//如果输入是48,此处i值为48/10==4
f(i);//f(4)再次调用f()函数,输出4
putchar(x%10+'0');//返回第一次调用x%10就是8
putchar(' ');
}
不好意引用一下php_ka的程序
我也是初学者,以下是我的见解
c语言的程序是一条一条执行的,只要理解这一点不难分析出
当第一次执行到f(i); 时x=48,i=4,以下的语句暂时不执行 进入递归调用void f(int x) 这时执行到f(i);时x=4,i=0 不满足if条件所以 输出putchar 。
因为已经到尽头了,返回上一次x=48,i=4语句继续往下执行putchar里得x=48