C中的递归,了解递归示例

Sus*_*san 0 c recursion

我无法理解这个例子.我无法弄清楚在某一点之后究竟发生了什么.

这是代码,结果应该是4.

我可以看到它多次调用自己,但它实际上是如何实现4的结果完全躲过了我.任何帮助将不胜感激.

#include <stdio.h>

int recursion(int i) 
{ 
  return (i>1 ? i - recursion(i/2) : 3);
} 

int main() 
{ 
  int number = 9; 
  printf("The result is %d\n", recursion(number)); 
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编辑: 非常感谢,这清除了!

sr0*_*853 5

这里来自代码, recursion(1) = 3以及i/2何时i>1,9/2 = 4(因为int作为参数)

这个递归函数的基本条件是when i = 1 递归用图解释自己]