Anny黄 发表于 2015-6-3 22:42:14

函数的嵌套以及递归有点不明白怎么运行的

本帖最后由 Anny黄 于 2015-6-3 22:44 编辑

我实在是不太明白这个程序的recurrence函数到底是怎么在【temp_result=recurrence(n-1)*n】这一步里面重复运行直到条件不成立后退出的。recurrence(n-1)*n后得出的值貌似没有保留吧,接着进行recurrence了不就只是重复的在(n-1)*n。走到了recurrence就又重复走了,值没有进行保留吧。还有我这编译器不知道为什么最近老是出现问题,能编译不能运行。帮忙看看怎么回事,谢谢了代码如下#include<stdio.h>
long recurrence(int n);
void main()
{
      int n;
      long result;
      scanf("%d",&n);
      result=recurrence(n);
      printf("%d",result);
}
long recursion (int n)
{
      long temp_result;
      if(n<0)
      {
                printf("n<0,input error\n");
      }
      else if(n==0||n==1)
      {
                temp_result=1;
      }
      else
      {
                temp_result=recurrence(n-1)*n;
      }
      return temp_result;
}


仰望天上的光 发表于 2015-6-4 08:32:46

(1)关于递归,C语言实现上会用一种叫做“堆栈”的东西保留中间结果
(2)链接器报错说函数recurrence没有定义,你如果觉得有定义,就把它找出来,然后你会发现你找不出来。因为你把它定义成了long recursion (int n);
而recurrence和recursion是两个不同的函数。

ygyuuu 发表于 2015-6-4 11:52:53

{:1_1:}

溯月0503 发表于 2015-6-4 16:58:22

无能为力:sad

哥斯拉不说话 发表于 2015-6-4 17:32:53

递归问题不明白就一步步的画,当recursion函数调用recursion函数时就再画一个recursion函数,再调用再画一个,画几遍你就明白了。

本人不在 发表于 2015-6-4 19:32:00

你把函数名写错了吧。。。

Anny黄 发表于 2015-6-4 20:56:09

哥斯拉不说话 发表于 2015-6-4 17:32
递归问题不明白就一步步的画,当recursion函数调用recursion函数时就再画一个recursion函数,再调用再画一 ...

我有点理解递归的原理,但是我不明白他的值是怎么保留下来的。但是仰望天上的光已经解答了,谢谢你!!

Anny黄 发表于 2015-6-4 20:58:05

仰望天上的光 发表于 2015-6-4 08:32
(1)关于递归,C语言实现上会用一种叫做“堆栈”的东西保留中间结果
(2)链接器报错说函数recurrence没有定 ...

虽然不太明白堆栈是什么意思,不过大概能理解运行原理了。谢谢了

淫令天下 发表于 2015-6-5 17:01:40

不是编译器出问题了,,,,而是你声明的函数,和你定义的函数名不一样。。。。

清风柳 发表于 2015-6-7 22:51:16

听说回复就可以拿鱼币
页: [1]
查看完整版本: 函数的嵌套以及递归有点不明白怎么运行的