首页 > 解决方案 > 递归在这段代码中究竟是如何工作的?

问题描述

递归在这里究竟是如何工作的?我得到“开始时的测试#”递减的部分,但“最后的测试#”如何增加?

# include<stdio.h>
int prod(int number);
int main(void)
{
  int x = 4;
  printf("The result of this function call is %d.\n",prod(x));
  return 0;
}


int prod(int number)
{
  int p;
  printf("test %d at the beginning\n", number);
  if(number == 1)
    return 1;
  p = (number + 1)* prod(number - 1);
  printf("test %d at the end\n", number);
  return p;
}

标签: c

解决方案


每次调用函数都有一个实例number。它在函数内部永远不会减少,一个较小的值被传递给被调用者。


推荐阅读