递归如何在C中起作用?

foo*_*foo 2 c recursion

我试图理解C中的递归是如何工作的.任何人都可以给我一个控制流的解释吗?

#include <stdio.h>
/* printd: print n in decimal */
void printd(int n)
{
  if (n < 0)
  {
    putchar('-');
    n = -n;
  }
  if (n / 10) printd(n / 10);
  putchar(n % 10 + '0');
}

int main()
{
  printd(123);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

caf*_*caf 19

控制流看起来像这样(->函数调用在哪里)

main()
 ??> printd(123)
      ??> printd(12)
      ?    ??> printd(1)
      ?    ?    ??> putchar('1')
      ?    ??> putchar('2')
      ??> putchar('3')
Run Code Online (Sandbox Code Playgroud)

  • @Carl:直接进入浏览器...... 80x25文本模式下青少年遗留下来的部分错误. (4认同)
  • 糟透了,我希望有一个漂亮的代码分析工具来了解更多... ;-) (2认同)