【发布时间】:2014-11-18 11:21:46
【问题描述】:
我已经盯着这个差不多一个星期了,不知道如何实现java代码。 首先,我写了一个递归 Hofstadters Q 序列,它计算 Hofstadter 的 Q 序列中的第 n(th) 个数,对于 n ≥ 1,如下所示 附言。 Hofstadters Q 数列有点像斐波那契数列,只是它的定义如下:
Q(1) = 1, Q(2) = 1, and
Q(n) = Q(n − Q(n − 1)) + Q(n − Q(n − 2)), for n > 2
public static int Hofstadters(int n)
{
int result;
if (n < 3)
result = 1;
else
result = Hofstadters(n - (Hofstadters(n-1))) + Hofstadters(n - (Hofstadters(n-2)));
return result;
}
这工作得很好。现在我面临的挑战是使用循环而不是递归和数组来编写这段代码(在我计算从 Q(1) 到 Q(n) 的序列中存储数字)。
我的想法是我将 Q(i) 元素放入数组的位置 i,从 1 到 n。
我什至不知道如何开始。到目前为止,我只写了下面的代码,并且从那以后几乎一直盯着我的屏幕:
public static void QSequence(int n)
{
int result;
int [] arr;
int value;
arr = new int [n-1];
arr[0] = 1;
arr[1] = 1;
for(int count = 2; count< arr.length; count++)
{
//code
}
}
任何帮助和提示将不胜感激,谢谢
【问题讨论】:
标签: java loops recursion iteration sequences