int f(int n){ return (n*f(n-1)); }这个函数有错么?正确的怎么写...
发布网友
发布时间:2024-09-29 03:05
我来回答
共4个回答
热心网友
时间:2024-10-07 22:27
你这是一个递归函数,递归函数应该有一个函数出口,就是最简单的那种情况,比如当n==1时,返回1,这样程序才不至于无限制的运行下去。写成类似下面的程序段。
int f(int n){
if(n==1)return 1;
else return (n*f(n-1));
}
热心网友
时间:2024-10-07 22:24
错在没有终止条件,会永远调用下去,直到资源耗尽,程序崩溃
int f(int n){
if(n == 1) return 1;
return (n*f(n-1));
}
热心网友
时间:2024-10-07 22:19
递归错误,理论上是正确程序,因为可以通过编译,报的错应该是overflow吧,你加个递归结束条件,类似于if(n<=1) return 1;
热心网友
时间:2024-10-07 22:18
正确答案: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。