想问一下我这个这么写为什么在DEVc++上运行不出结果呀,我感觉逻辑没啥问题呀。
问题:求1+2!+3!+...+20!的和
#include
int cheng(int n){
int j;
while(n>0){
j=n*cheng(n-1);
}
return j;
}
int main(){
int i;
int sum=1;
for(i=2;i<=20;i++){
sum=sum+cheng(i);
}
printf("%d",sum);
}
想问一下我这个这么写为什么在DEVc++上运行不出结果呀,我感觉逻辑没啥问题呀。
问题:求1+2!+3!+...+20!的和
#include
int cheng(int n){
int j;
while(n>0){
j=n*cheng(n-1);
}
return j;
}
int main(){
int i;
int sum=1;
for(i=2;i<=20;i++){
sum=sum+cheng(i);
}
printf("%d",sum);
}
因为你使用递归调用,但是递归函数没有出口。
递归函数必须要有一个出口。否则会一直走cheng()那个函数。
你读一下代码,当n=2时,程序就一直在cheng()出不去了。
你可以点个断点,单步执行运行看一看。
好好学,加油。