int f(int n){ return (n*f(n-1)); }这个函数有错么?正确的怎么写啊?

如题所述

你这是一个递归函数,递归函数应该有一个函数出口,就是最简单的那种情况,比如当n==1时,返回1,这样程序才不至于无限制的运行下去。写成类似下面的程序段。
int f(int n){
if(n==1)return 1;
else return (n*f(n-1));
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-16
递归错误,理论上是正确程序,因为可以通过编译,报的错应该是overflow吧,你加个递归结束条件,类似于if(n<=1) return 1;
第2个回答  2010-12-16
错在没有终止条件,会永远调用下去,直到资源耗尽,程序崩溃
int f(int n){
if(n == 1) return 1;
return (n*f(n-1));
}
第3个回答  2016-01-09
正确答案:A
本题主要考查函数的递归调用。在做递归调用函数类型的题目时,我们首先要找到函数的出口和递归结束的条件。
在本题中,程序首先定义了一个fun函数,函数的形参是一个整型变量n,从后面的程序可以看出,该函数是一个递归函数。在函数体中,首先执行条件判断语句,如果条件结果为真,说明变量n为1,此时返回1,这是递归函数的出口;否则返回函数的递归调用。
在主函数中,定义一个变量x,并试图通过键盘输入的方式为变量x赋初值,然后调用fun函数,并用x作为其形参,用x保存最后的运行结果输出。
变量x的初值为10,从上面的分析我们知道,递归调用的出口是n=1,而每递归一次n的值减1,因此,函数fun递归调用了9次,其运算相当于10+9+8+7+6+5+4+3+2+1=55。因此,程序最终的输出结果是55。

...f(int n){ return (n*f(n-1)); }这个函数有错么?正确的怎么写啊?
你这是一个递归函数,递归函数应该有一个函数出口,就是最简单的那种情况,比如当n==1时,返回1,这样程序才不至于无限制的运行下去。写成类似下面的程序段。int f(int n){ if(n==1)return 1;else return (n*f(n-1));}

...1; else return (n*f(n-1)); }这个函数有什么作用?时间复杂度是...
这个函数是用来求阶乘的,用了递归方法。输入100,就会得到100的阶乘。但是由于数值太大,会导致溢出。建议将返回值类型改为 double 型。计算N的阶乘需要进行N次乘法运算,因此时间复杂度为O(N)。

...int f(int n) { if(n==0||n==1) return 1; else return n*f(n-1...
这个算法实质上是在求N的阶乘,也就是说运算过程是:n*(n-1)...2*1 ,中间经过了N次运算,也就是说时间复杂度是O(n)

int f(int n) {if(n) return f(n-1)+n; else return n; }这个递归函数...
=f(1)+2+3+4 =f(0)+1+2+3+4 =0+1+2+3+4 =10

求助,C语言,函数里有两个return的问题,谢谢
首先,当n>1时,会执行return(n * fun(n-1));这一句。而一个函数当返回后,即退出这个函数,所以不会再执行return 1;这一句。在主函数传递进来的参数是3,3 > 1,所以会返回 3 * fun(2),2还是大于1,递归时返回 2 * fun(1),合起来便是 3 * 2 * fun(1)。而当n == 1时,不...

void f(int n) {if (n==0)return; f(n-1); printf("%d",n);} void...
传值给了n n等于5 第一次if不成立 执行f(n-1)>>f(4) ,第二次if不成立 执行f(n-1)现在n等于4>>f(3) 到了最后就是if成立return 就是从f(1)开始向上推一到f(5) 因为递归函数 有两个步骤 递推>>回归 ,递推从未知到以知,回归从以知把未知值求出 ...

...其返回值为( ). int f(int n) { if (n) return f(
4+3+2+1+0=10; BBBBBBBBBBBBBBB

为啥要写成n==0或n==1;还有return n*f(n-1)是什么意思
n=0和n=1是赋值,分别将0和1赋值给n。而n==0是判断语句,判断n是不是等于0 return n*f(n-1) 是返回一个值,这个值是由n和f(n-1)两个数相乘得出来的,f就是这个方法,将n-1传入

递归调用的递归举例
int f (int x){int y;z=f(y);return z;} 这个函数是一个递归函数。 但是运行该函数将无休止地调用其自身,这当然是不正确的。为了防止递归调用无终止地进行, 必须在函数内有终止递归调用的手段。常用的办法是加条件判断, 满足某种条件后就不再作递归调用,然后逐层返回。 下面举例说明递归调用...

int f(int n)为什么有个括号,是什么意思
这个是一个返回值为int类型的函数,函数名为f,里面带有有一个int型参数,参数名为n,

相似回答