| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 461 人关注过本帖
标题:C语言函数递归调用的问题
取消只看楼主 加入收藏
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
结帖率:62.5%
收藏
已结贴  问题点数:10 回复次数:3 
C语言函数递归调用的问题
求n!
程序如下:
#include<stdio.h>
void main()
{
    long int fac(int n);
    int n;
    scanf("%d",&n);
    printf("%ld",fac(n));
}
long int fac(int n)
{
    long int c;
    if(n==1)
        c=1;
    else
                c=fac(n-1)*n;
    return(c);
}

我觉得算法上面,程序也可以改成:
#include<stdio.h>
void main()
{
    long int fac(int n);
    int n;
    scanf("%d",&n);
    printf("%ld",fac(n));
}
long int fac(int n)
{
    long int c;
    if(n==1)
        c=1;
    else
    {
        c++;
        c=fac(n-1)*c;
    }
    return(c);
}

但是我自己改的程序运行结果是错误的,是不是因为C语言函数递归调用里面规定递归的这个公式只能出现与递归次数n相关的值或函数,而不能出现其他变量(比如c),因为函数的递归调用只能调用与n相关的值或函数(即只能调用与被调用函数有关的值)?

[ 本帖最后由 killah 于 2013-3-3 21:04 编辑 ]
搜索更多相关主题的帖子: long void include return C语言 
2013-03-03 21:02
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 2楼 beyondyf
我怕我理解的不对发上来问问。。。
2013-03-03 22:27
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 5楼 cuixinyu
我明白可以不用c的,就是想知道用c会出错的原因是否是因为是递归调用,只能调用函数本身以及函数涉及到的变量
2013-03-03 23:52
killah
Rank: 2
等 级:论坛游民
帖 子:55
专家分:11
注 册:2013-2-4
收藏
得分:0 
回复 8楼 cuixinyu
谢谢你的回答
2013-03-06 22:08
快速回复:C语言函数递归调用的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023176 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved