关于递归简单算法问题求解
这是一个简单的递归求阶乘的程序,我有个问题不明白。
就是用VC++调试下面程序的时候,下面程序 temp_result=recursion(n-1)*n; return temp_result; 这里那个n的值为什么从1开始慢慢增加到你输入的那个数啊。
例如:我输入了一个数字 5,此时n=5,temp_result= recursion(4)*5= recursion(3)*4*5= recursion(2)*3*4*5=1*2*3*4*5 。但是调试的时候n却是从1开始的。我不太明白为什么n调试从1开始而不是从5开始然后递减。。
程序代码:
#include <stdio.h> long recursion (int n); void main() { int n ; long result; printf("input a integer number:\n"); scanf ( "%d",&n); result=recursion(n); printf("%d!=%ld\n",n,result); } long recursion (int n) { long temp_result; if (n<0) { printf("n<0,input error!\n"); } else if (n==0||n==1) { temp_result=1; } else { temp_result=recursion(n-1)*n; //调试这里 } return temp_result; //调试这里 }