如何处理这种递归程序

时间:2017-08-03 12:05:05

标签: c recursion

简单递归问题的答案很容易预测,但是当它一次涉及多个调用时会变得困难(这里e( - n)被调用两次  在单一范围内)。 我的问题是如何通过创建TREE类型的结构来解决这种程序

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);
   }
}

1 个答案:

答案 0 :(得分:0)

如果你用一支铅笔在一张纸上做,你应该得到这个:

call => E(3);

call => E(2);
call => E(1);
call => E(0);
 初始printf:0
call => E(-1);
 初始printf:1
call => E(0);
 初始printf:2
call => E(1);
call => E(0);
 初始printf:0
call => E(-1);