鱼C论坛

 找回密码
 立即注册
查看: 1908|回复: 9

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

[复制链接]
发表于 2015-6-3 22:42:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

我实在是不太明白这个程序的recurrence函数到底是怎么在【temp_result=recurrence(n-1)*n】这一步里面重复运行直到条件不成立后退出的。recurrence(n-1)*n后得出的值貌似没有保留吧,接着进行recurrence了不就只是重复的在(n-1)*n。走到了recurrence就又重复走了,值没有进行保留吧。还有我这编译器不知道为什么最近老是出现问题,能编译不能运行。帮忙看看怎么回事,谢谢了 $YR5QU[LU]D`(D2C871]8HH.png 代码如下
#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;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-4 08:32:46 | 显示全部楼层
(1)关于递归,C语言实现上会用一种叫做“堆栈”的东西保留中间结果
(2)链接器报错说函数recurrence没有定义,你如果觉得有定义,就把它找出来,然后你会发现你找不出来。因为你把它定义成了long recursion (int n);
而recurrence和recursion是两个不同的函数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-4 11:52:53 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-6-4 16:58:22 | 显示全部楼层
无能为力:sad
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-4 17:32:53 | 显示全部楼层
递归问题不明白就一步步的画,当recursion函数调用recursion函数时就再画一个recursion函数,再调用再画一个,画几遍你就明白了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-4 19:32:00 | 显示全部楼层
你把函数名写错了吧。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-6-4 20:56:09 | 显示全部楼层
哥斯拉不说话 发表于 2015-6-4 17:32
递归问题不明白就一步步的画,当recursion函数调用recursion函数时就再画一个recursion函数,再调用再画一 ...

我有点理解递归的原理,但是我不明白他的值是怎么保留下来的。但是仰望天上的光已经解答了,谢谢你!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

虽然不太明白堆栈是什么意思,不过大概能理解运行原理了。谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-5 17:01:40 | 显示全部楼层
不是编译器出问题了,,,,而是你声明的函数,和你定义的函数名不一样。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-6-7 22:51:16 | 显示全部楼层
听说回复就可以拿鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 01:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表