作业帮 > 综合 > 作业

请问这个递归函数什么意思

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/05/27 22:20:09
请问这个递归函数什么意思
long rfact (int n)
{
long ans;
if (n > 0)
ans = n*rfact (n-1);
else
ans = 1;
return ans;
}
假设n=5
请问这个递归函数什么意思
这个递归函数是用来输出阶乘的.lz到底哪不明白,希望描述清楚点.
这个函数是一个很典型的递归计算阶乘的例子.
如果n = 5,这个函数会计算 5*4*3*2*1的值,即 5!
这点lz应该能看明白吧.如果lz不明白为什么这个函数能计算阶乘,我也没什么太好的解释方法.你可以尝试让n=2,然后手动重现这个函数的调用过程.将2代入函数,然后对函数进行展开.想象你正在做数学题,对x=2时的f(x)进行求解,大致是这么个过程.因为只有2层,所以比较好想,自己想下这个函数的整个执行流程,就能理解了.
如果lz想问的是些思想方面的问题,比如:为什么要用递归来写,以及怎么用递归函数来描述一个问题,这个其实只不过是一种编程的思维逻辑和实现手段.已经可以证明,所有的递归函数都可以转化为等价的循环过程.比如,上面这个函数,其实是可以这么写的:
long rfact (int n)
{
long ans;
for(in i=1;i
再问: 如果是没有返回的递归呢? void AAA (void) { printf (“abc.\n”); if (n < 4) AAA (n+1); printf (“ABC.\n”); } n=1.
再答: 函数原型是void AAA(int n)吧?这个函数没有显示返回(即return语句),但是运行到反括号}那里还是会返回的
程序流程是这样的,当某一语句S调用某个函数F时,流程转入被调用的函数F,一直运行到函数F里的return语句或者结束的大括号处,然后流程转入语句S处,继续往下执行。简而言之,某个函数执行完毕后,返回到调用它的语句处。

再问: 谢谢你 完全明白。
再答: 那就太好了~ 大年三十还在编程的小伙伴!新春快乐!^_^
再问: 没办法啊 起点低,要加把劲啊!可以留个联系吗
再答: 那就加我的QQ吧,243297031,加的时候把你的百度账号名字写上我就知道是你了~