在线等 这个求N的阶层的程序到底哪里错了?
c语言吧
全部回复
仅看楼主
level 4
JCNLAZC 楼主
#include<stdio.h>
int main()
{
int jc(int); //声明jc函数
int n,s;
printf("请输入所要求的阶层:\n");
scanf("%d",&n);
s=jc(n);
printf("%d",&s);
return 0;
}
int jc(int n)
{
int s;
if(n<0)
printf("n<0,数据错误");
else if (n==1)
s=1;
else s=(jc(n-1))*n;
return (s);
}
2013年12月12日 14点12分 1
level 4
JCNLAZC 楼主
别沉了啊 新人第一次发帖
2013年12月12日 14点12分 2
level 4
JCNLAZC 楼主
2013年12月12日 14点12分 3
level 4
JCNLAZC 楼主
擦 怎么没人啊
2013年12月12日 14点12分 4
level 7
jc是什么函数?自定义?
2013年12月12日 15点12分 5
level 6
首先 楼主 你对于阶乘值类型的定义就不太好了 对于阶乘最好定义成长整形 即
long s;要知道随随便的超过十以上的数的阶乘就有可能超过int的范围了(要不楼主可以用计算机实验一下)
另外 楼主有没有考虑过当输入的n值为0时的情况呢?显然没有,根据数学课本上的定义
0的阶乘为1. 你只是考虑了小于0和大于0的部分,这是不该遗漏的地方啊
long jc(int n)
{
long s;/*将s定义为长整形 不然很容易溢出!*/
if(n<0)
printf("n<0,数据错误");
else if (n==1||n==0) /*考虑n为0或1的情况*/
s=1;
else s=(jc(n-1))*n;
return (s);
}
2013年12月12日 15点12分 7
level 16
1 LZ的老师是不是有点大舌头。
2 jc写的有点怪异,异常处理居然由jc来处理。s也很奇怪。
3 溢出了,而且目测long也不顶用。long long可以一试。
4 [喷]&s?
2013年12月12日 15点12分 8
大舌头好评[滑稽]
2013年12月12日 17点12分
level 7
先不说递归用的对不对,单单printf就注定了失败
2013年12月12日 17点12分 9
level 8
值得研究
2013年12月12日 18点12分 10
level 10
大数阶乘是需要自己实现类型的。。。。内置类型不顶用
2013年12月12日 18点12分 11
其他的就自己看。。。仔细点。。。
2013年12月12日 19点12分
level 9
循环就ok了。不需要递归
2013年12月13日 01点12分 12
1