To
LZ:
当n==1时那么返回的不是1吗?这个函数的返回值应该是1才对
假设k==10;
在最后一次当n==1的时候,确实返回了1,但是,在之前的调用中,返回了
fun(10)
=
10fun(9)
=
109fun(8)
==
10982fun(1)
最后得到10的阶乘
To
applepath:
warning
C4715:
'fun'
:
not
all
control
paths
return
a
value
并不是所有流程都返回了值
因为if语句的范围并不影响到fun函数,即使你已经考虑了所有情况,但是编译器认为你的返回值不够也就是说,需要在最后添加一个并不需要的返回值来去掉这个警告就像你那样另外可以:
long
fun(int
n)
{
if(n>1)
return
nfun(n-1);
else
if(n==1)
return
1;
return
0;
}
另外程序可以这样改(当然,假设参数n总是合法的也就是假设n>=0)
long
fun(int
n){
if(n>1)
return
nfun(n-1);
return
1;
}
这样不用每次去else费时间
include "stdioh"
int fac(int k)
{
if(k==1) return 1;
else return kfac(k-1);
}/递归求阶乘/
void main()
{
int i=1;
for(i;i=5;i++)
{
fac(i);/调用函数计算阶乘/
sum+=fac(i);/计算从1的阶乘到5的阶乘之和/
}
printf("sum=%d",sum);/输出结果/
}
for循环实现的就是计算从1的阶乘到5的阶乘的和,自定义的函数实现的就是计算阶乘,那是一个递归算法的运用
手打很辛苦的,希望能帮到你,采纳吧
以上就是关于函数的递归调用(求10的阶乘)这道题怎么走的全部的内容,包括:函数的递归调用(求10的阶乘)这道题怎么走的、请使用函数的递归调用编写求阶乘的函数,并计算1!+2!+3!+4!+5!、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)