递归求和

时间:2021-01-31 15:32:11

标签: java

找出以下递归求和函数有什么问题:

public int sum (int x){
  if(x==0) return 0;
  else return sum(x-1)+x;
}
  1. 基本情况应该返回 1 而不是 0
  2. 基本情况应该是 (x<=0) 而不是 (x==0)

答案是 2。但我不认为保留 (x==0) return 0; 有什么问题,你怎么看?

1 个答案:

答案 0 :(得分:1)

虽然这个问题很含糊,但给出的答案只有一种解释方式:

原始给定程序和“固定”程序之间的唯一行为差异是输入为负时。给定语句,当输入为负时,合理的结果是返回 0(这是固定程序所做的),而原始程序无限循环(并导致堆栈溢出/未定义行为)。