C 如何处理这种递归程序
简单递归问题的答案很容易预测,但当它一次涉及多个调用时,它就会变得很困难(这里e(--n)被调用两次 在单个范围块中)。 我的问题是如何通过创建树型结构来解决这类程序C 如何处理这种递归程序,c,recursion,C,Recursion,简单递归问题的答案很容易预测,但当它一次涉及多个调用时,它就会变得很困难(这里e(--n)被调用两次 在单个范围块中)。 我的问题是如何通过创建树型结构来解决这类程序 void e(int); int main(void) { int a = 3; e(a); putchar('\n'); return 0; } void e(int n) { if (n > 0) { e(--n); printf("%d ", n);
void e(int);
int main(void)
{
int a = 3;
e(a);
putchar('\n');
return 0;
}
void e(int n)
{
if (n > 0)
{
e(--n);
printf("%d ", n);
e(--n);
}
}
如果你用铅笔在一张纸上完成,你应该得到: call=>e(3) call=>e(2)
call=>e(1)
call=>e(0)
初始打印F:0
call=>e(-1)
初始打印f:1
call=>e(0)
初始打印F:2
call=>e(1)
call=>e(0)
初始打印F:0
call=>e(-1) 一支铅笔和一张纸在这里最合适。或者使用您喜爱的调试器单步执行程序也可能有所帮助。