请问这个递归函数什么意思long rfact (int n){long ans;if (n > 0)ans = n*rfact (n-1);else ans = 1;return ans;}假设n=5

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 15:53:33

请问这个递归函数什么意思long rfact (int n){long ans;if (n > 0)ans = n*rfact (n-1);else ans = 1;return ans;}假设n=5
请问这个递归函数什么意思
long rfact (int n)
{
long ans;
if (n > 0)
ans = n*rfact (n-1);
else
ans = 1;
return ans;
}
假设n=5

请问这个递归函数什么意思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