#include<stdio.h>
#include<math.h>
main( )
{
float fac(int n);
printf("%d\n",fac(5));
}
float fac(int n)
{
float z;
if(n<=0)
z=1;
else
z=fac(n-1)*n ;
return z;
}
C语言 递归法求阶乘 改错
答案:6 悬赏:70 手机版
解决时间 2021-08-18 12:05
- 提问者网友:雪舞兮
- 2021-08-18 08:49
最佳答案
- 五星知识达人网友:玩世
- 2021-08-18 09:07
你定义fac(n)时,fac是单精度实数。输出时却用了%d
把%d改成 %f 就行了。
把%d改成 %f 就行了。
全部回答
- 1楼网友:北方的南先生
- 2021-08-18 12:25
float fac(int n);
printf("%f\n",fac(5)); //就是这句话,把%d改成%f就对了
- 2楼网友:人间朝暮
- 2021-08-18 12:19
因为你输出的是%d整形的,所以要强制转换类型!
- 3楼网友:孤独的牧羊人
- 2021-08-18 11:52
因为fac函数每次的调用都会去返回一个Z的值!可能是这方面的错!
- 4楼网友:廢物販賣機
- 2021-08-18 10:17
#include<stdio.h> #include<math.h> main( ) { float fac(int n); printf("%d\n", (int)fac(5)); } float fac(int n) { float z; if(n<=0) z=1; else z=fac(n-1)*n ; return z; }
//可以
- 5楼网友:怀裏藏嬌
- 2021-08-18 10:01
把float都改成int
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯