題目中的問題
#include<stdio.h> #include<stdlib.h> //用遞歸函數(shù)來計(jì)算N的階乘 double?factorial(int?n) { double?result; if(n<0) { printf("輸入錯(cuò)誤\n");? }? else?if(n==1?||n==0) { result=1; }? else? { result=factorial(n-1)*n;?//n=5?5-1=4?4*5=20???接下來該怎么算呢?麻煩前輩指點(diǎn)一下!? }? return?result; }? int?main?() { double?n?; scanf("%lf",&n);? printf("%lf的階乘=%g\n",n,factorial(n));? printf("%lf的階乘=%lf\n",n,factorial(n));? return?0; }
2015-11-10
當(dāng)n=5時(shí)由主函數(shù)一直調(diào)用它本身 ?結(jié)果就是result=factorial(4)*5 ?此時(shí)再次調(diào)用了factorial這個(gè)函數(shù) ?結(jié)果返回result=factorial(3)*4*5 ?后面繼續(xù)調(diào)用 ? 結(jié)果就是1*2*3*4*5
2015-11-10
?result=factorial(n-1)*n這里就是你又回到factorial這個(gè)函數(shù)啊