****关于C语言阶乘问题
以下的C程序中,最终得出的值是多少?
1 #include "stdio.h"
2
3 int f(int n);
4
5 int main()
6 {
7 int a=0;
8 a=f(4);
9 printf("the sum n is : %d\n",a);
10 return 0;
11 }
12
13 int f(int n)
14 {
15 printf("this n is : %d\n",n);
16 if(n>0) return n+f(n-1);
17 if(n=0) return 0;
18 }
如果,删除第15条程序“ printf("this n is : %d\n",n);”之后,最终得出的值又是多少?为什么?
if(n=0) return 0;
这里应该是if(n==0)
代码都错了
这个递归就是计算1到n的总和(删除掉15行输出 the sum n is : 10)
保留15行,则分别输出
this n is : 4
this n is : 3
this n is : 2
this n is : 1
this n is : 0
the sum n is : 10
4+3+2+1+0=10
了解一下递归,你就知道为什么了!
4+3+2+1=10
#include <stdio.h>
int f(int n);
int main()
{
int a=0;
a=f(4);
printf("the sum n is : %d\n",a);
return 0;
}
int f(int n)
{
printf("this n is : %d\n",n);
if(n>0) return n*f(n-1);
if(n==0) return 1;
}
输出语句,删不删无所谓。
采纳给下,谢谢!
第17行这里有错误:if(n=0) return 0; 这里少了‘=' ,应该为: if (n == 0) return 0;
和第15行这句没有关系。
修改后得到的结果:
this n is : 4
this n is : 3
this n is : 2
this n is : 1
this n is : 0
the sum n is : 10