printf语句和递归函数递推和回递时的执行顺序
printf语句也在函数getpeachnumber(n)里面,当n等于1,调用自身时,为什么printf语句在这个函数体内也没有执行到printf语句?
如果递推时没有执行到printf语句,为什么回推的时候会执行到printf语句,而不是回推完毕之后,得到第一天的总数,再来执行printf语句
printf语句也在函数getpeachnumber(n)里面,当n等于1,调用自身时,为什么printf语句在这个函数体内也没有执行到printf语句?
如果递推时没有执行到printf语句,为什么回推的时候会执行到printf语句,而不是回推完毕之后,得到第一天的总数,再来执行printf语句
2015-12-04
#include <stdio.h> int getPeachNumber(n) { int num; //定义所剩桃子数 if(n==10) { return = 1; } else { num = (getPeachNumber(n+1)+1)*2; printf("第%d天所剩桃子%d个\n", n, num); } return num; } int main() { int num = getPeachNumber(1); printf("猴子第一天摘了:%d个桃子。\n", num); return 0; }
上面的代码总共有22行,假设第一次调用时,没有行的标号为1-1 到 1-22;第二次调用时 2-1 到2-22;依此类推。
代码执行顺序:
1-1 >> 1-11 >>2-1 >>2-11 >>>>>>10-1>>10-6 >>9-12>>9-22>>8-12>>8-22>>>>>>1-12>>1-22
举报