qq_38431690
2021-07-09 11:13
采纳率: 60%
浏览 45
已采纳

java递归求1-100的乘积 为什么结果为0

/*

  • 递归方法的使用(了解)

  • 1.递归方法:一个方法体内调用它自身。

    1. 方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。
  • 递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。

  • /

public class RecursionTest {

public static void main(String[] args) {
    // 例1:计算1-100之间所有自然数的和
    // 方式一:

// int sum = 0;
// for (int i = 1; i <= 100; i++) {
// sum += i;
// }
// System.out.println(sum);

    RecursionTest test = new RecursionTest();
    int sum1 = test.getSum1(100);
    System.out.println(sum1);

}
public int getSum(int n){

    if (n == 1){
        return 1;
    }else {
        return n + getSum(n - 1);
    }
}

// 例2:计算1-n之间所有自然数的乘积:n!
public int getSum1(int n) {

    if (n == 1) {
        return 1;
    } else {
        return n * getSum1(n - 1);
    }

}

}

img

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 走一步-再走一步 2021-07-09 11:19
    已采纳

    数据溢出了
    int的最大范围还不到30亿

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • Kscstg 2021-07-09 11:30

    我的天哪,你晓得100的阶层有好大不,用java大数类型才能表示,也就是字符串来模拟数字运算

    评论
    解决 无用
    打赏 举报
  • 走一步-再走一步 2021-07-09 11:32
            int sum = 1;
            for (int i=1;i<100;i++){
                sum *= i;
                System.out.println(i+"\t"+ sum);
            }
    

    1 1
    2 2
    3 6
    4 24
    5 120
    6 720
    7 5040
    8 40320
    9 362880
    10 3628800
    11 39916800
    12 479001600
    13 1932053504
    14 1278945280
    15 2004310016
    16 2004189184
    17 -288522240
    18 -898433024
    19 109641728
    20 -2102132736
    21 -1195114496
    22 -522715136
    23 862453760
    24 -775946240
    25 2076180480
    26 -1853882368
    27 1484783616
    28 -1375731712
    29 -1241513984
    30 1409286144
    31 738197504
    32 -2147483648
    33 -2147483648
    34 0
    35 0
    36 0
    37 0
    38 0
    39 0
    40 0
    41 0
    42 0
    43 0
    44 0
    45 0
    46 0
    47 0
    48 0
    49 0
    50 0
    51 0
    52 0
    53 0
    54 0
    55 0
    56 0
    57 0
    58 0
    59 0
    60 0
    61 0
    62 0
    63 0
    64 0
    65 0
    66 0
    67 0
    68 0
    69 0
    70 0
    71 0
    72 0
    73 0
    74 0
    75 0
    76 0
    77 0
    78 0
    79 0
    80 0
    81 0
    82 0
    83 0
    84 0
    85 0
    86 0
    87 0
    88 0
    89 0
    90 0
    91 0
    92 0
    93 0
    94 0
    95 0
    96 0
    97 0
    98 0
    99 0

    Process finished with exit code 0

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题