为了账号安全,请及时绑定邮箱和手机立即绑定

为什么 n 为20 阶乘为负数

   #include<stdio.h>

  int prodict(int n){

  int ss;

  if(n < 0){

  printf("输入错误!");

  return 0;

  }

  if(n == 1 || n == 0){

 return 1;

  }

 else {

 ss = prodict(n-1) * n;

 }

  return ss;

 }

 int main() {

 printf("n=%d: %d\n", 1, prodict(1));

 printf("n=%d: %d\n", 2, prodict(2));

 printf("n=%d: %d\n", 3, prodict(3));

 printf("n=%d: %d\n", 4, prodict(4));

 printf("n=%d: %d\n", 5, prodict(5));

 printf("n=%d: %d\n", 6, prodict(6));

 printf("n=%d: %d\n", 7, prodict(7));

 printf("n=%d: %d\n", 7, prodict(8));

 printf("n=%d: %d\n", 9, prodict(9));

 printf("n=%d: %d\n", 10, prodict(10));

 printf("n=%d: %d\n", 20, prodict(20));

 printf("n=%d: %d\n", 30, prodict(30));

 printf("n=%d: %d\n", 50, prodict(50));

 return 0;

 }


运算结果:

n=1: 1

n=2: 2

n=3: 6

n=4: 24

n=5: 120

n=6: 720

n=7: 5040

n=7: 40320

n=9: 362880

n=10: 3628800

n=20: -2102132736

n=30: 1409286144

n=50: 0



正在回答

1 回答

超界。考虑int型范围在-32768~32767,用实型更妥当

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么 n 为20 阶乘为负数

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信