【发布时间】:2017-04-02 16:43:57
【问题描述】:
我有两种递归方法。其中一个有一个特殊的公式,我必须在第二种方法中使用它。我的任务是编写一个名为 reportOnValues 的递归方法,它将使用 计算方法中实现的递归公式的列表 特殊递归函数。我目前在将公式实施到我的 reportValues 方法时遇到问题。我怎么能做到这一点。
第一种方法
public static void reportOnValues(MyListOfInts m){
if (m == null) return;
else
return specialRecursiveFunction(m.firstInt) + reportOnValues(m.restOfTheInts);
}
第二种方法
public static double specialRecursiveFunction(int x){
if (x == 1) return 0;
else if (x%2==1)
return 1 + specialRecursiveFunction(x-1);
else
return 1 + specialRecursiveFunction(x/2);
}
构造链表
public class MyListOfInts {
public int firstInt; // contain data
public MyListOfInts restOfTheInts; // points to next node
public MyListOfInts(int f){ // constructor 1
firstInt=f;
}
public MyListOfInts(int f, MyListOfInts r){ // constructor 2 implements nodes and data
firstInt=f;
restOfTheInts=r;
}
}
【问题讨论】:
-
很难告诉你你正在尝试做什么。为什么你将
reportOnValues声明为void却试图从中返回一个值? -
你在实现代码时遇到了什么问题,我认为除了 lucero 提到的代码之外,给定的代码可以正常工作
-
我猜
reportOnValues应该返回double?请澄清这一点。 -
是的,抱歉,它是要返回一个双精度数。
-
那么,如果您将
if (m == null) return;更改为if (m == null) return 0;是否有效?如果不是,究竟是什么问题?
标签: java recursion linked-list