有谁能告诉我为什么会收到此错误?这真让我烦恼。我想要做的是找到表达式2 ^ k +1的总和,因为k的范围从1到n。
import java.util.*;
public class mySums
{
private static double n;
public static void main(String[] args)
{
recurSum(4);
System.out.println();
}
/* public static void iterativeSum (int num)
{
}
*/
public static double recurSum (double num)
{
if (n==1){
return 1;}
else {
return (Math.pow(2.0, n) +1) + recurSum(n-1);}
}
}
感谢。
答案 0 :(得分:6)
这是因为您在n
中使用的是num
而不是recurSum
。 n
是一个永不改变的静态变量;你应该删除它。另一方面,num
是您传递给recurSum
的参数;当你降低递归调用的级别时,它的值会降低,最终会点击1
并让你退出:
public static double recurSum (double num) {
if (num==1) {
return 1;
} else {
return (Math.pow(2.0, num) +1) + recurSum(num-1);
}
}
答案 1 :(得分:1)
由于精度问题,决不使用“==”,因此你的递归永远不会结束。
将其更改为
if (n <= 1)
另外我只是注意到该函数接受一个参数“num”,因此函数中未定义“n”,但我假设这只是一个错字。