| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1559 人关注过本帖
标题:用递归函数求阶乘
只看楼主 加入收藏
新手南瓜
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2016-12-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
用递归函数求阶乘
从键盘输入一个任意的不超过20的正整数x,计算并输出x的阶乘。
搜索更多相关主题的帖子: 正整数 键盘 
2016-12-04 15:30
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:10 
不超过20,用long long 型,但是有些编译器如vc6是不支持的,得要转换成double来保存数据。递归方面稍微下一点功夫就行了~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-04 16:21
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
收藏
得分:10 
#include<stdio.h>
int main()
{
    long long int jiechen_(int x);
    int x,m;
    printf("请输入整数x:");
    scanf("%d",&x);
    m=jiechen_(x);
    printf("x!的值为:%d\n",m);
    return 0;
}
long long int jiechen_(int x)
{
      long long int z;
    if(x<0)printf("error!错误");
    else if(x==0||x==1)z=1;
    else
    z=x*jiechen_(x-1);
    return(z);
}
2016-12-05 15:22
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
收藏
得分:0 
等于20时不行,不知道为什么,估计是超过数据类型的范围了
2016-12-05 15:22
zzdloveclp
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:66
专家分:108
注 册:2016-11-25
收藏
得分:0 
你可以换成double试试
2016-12-05 15:26
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
还有一个要注意的问题~用double要记得统计零位的个数,因为double可能会把0忽略。应该先统计n的阶乘数位再决定保留多少位小数,顺便把0位也保留下来

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-05 16:20
zw849219538
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2018-9-17
收藏
得分:0 
2018-09-17 22:54
快速回复:用递归函数求阶乘
数据加载中...
 
   



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

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