如何在Java中计算Lucas数

如何在Java中计算Lucas数,java,Java,我是一名初级程序员,需要用java编写一个应用程序,该应用程序要求输入一个数字,然后打印Lucas数字的前n个数字。例如,当输入7时,它输出:2、1、3、4、7、11、18 为了清楚起见,lucas数字的定义如下: 如果n=0,则为2 如果n=1,则为1 如果n>1,则L(n-1)+L(n-2) 我真的不知道如何用java编程。因为我无法将其转换为java代码。我已经想了一段时间了,但还是想不出来。还有,当我有了计算第n个lucas数的代码时,我现在将学习如何输出所有第一个Lucan数,直到第n

我是一名初级程序员,需要用java编写一个应用程序,该应用程序要求输入一个数字,然后打印Lucas数字的前n个数字。例如,当输入7时,它输出:2、1、3、4、7、11、18

为了清楚起见,lucas数字的定义如下:

如果n=0,则为2

如果n=1,则为1

如果n>1,则L(n-1)+L(n-2)


我真的不知道如何用java编程。因为我无法将其转换为java代码。我已经想了一段时间了,但还是想不出来。还有,当我有了计算第n个lucas数的代码时,我现在将学习如何输出所有第一个Lucan数,直到第n个数。你们中的一些人能帮我找到正确的方法或者给我一些建议吗?非常感谢

如果您不确定如何完成整个过程,请将问题分解为更小的部分,直到可以开始

试着一次接一个病例。实现“如果n=0则为2”的情况,测试它是否有效。计算很简单,但您也必须编写调用实现的代码。这个小案例可以帮助您检查它周围的代码是否正常工作


然后实施下一个,检查它是否仍然有效,实施最后一个。你走的时候它会变得更清晰

卢卡斯数的定义是递归的,即,要计算第N个卢卡斯数,您已经需要知道第N-1个和第N-2个

一种天真的方法是

public int lucas(int N) {
    if( N == 0 ) return 2;
    if( N == 1 ) return 1;
    return lucas(N-1) + lucas(N-2);
}
然而,你只需要打印数字,不是吗?事实上,这很容易

int L2 = 2;
int L1 = 1;
for( int i = 2; i <= N; i++ ) {
    int L = L1 + L2;
    print(L); //or whatever output function you have
    L2 = L1;
    L1 = L;
 }
intl2=2;
int L1=1;

对于(int i=2;i,如果有人正在查找公式,并且发生在本页上,那么这可能会有所帮助。在Windows中,使用以下行并将每个
N
替换为所需的整数,复制修改后的行并将其粘贴到Windows的计算器中:

(5@/2+0.5)yN+((5@/2+0.5))y(-N)=

例如,如果要查找
7
的Lucus编号,可以将此行粘贴到Windows的计算器中:

(5@/2+0.5)y7+((5@/2+0.5))y(-7)=


结果将是
29

这是家庭作业吗?如果是,请将其标记为感谢您的回答。我使用了您给出的第一个计算结果,这样当输入一个数字时,我将得到第n个Lucas数字进行打印。但是,我需要打印所有数字,直到第n个Lucas数字进行打印。我怎么能这样做?问题是我不需要只打印数字,还要在前面加一个字符串,比如:前N个Lucas数字是:2,1,3,5,7。我知道你写的第二段代码会打印所有数字,但我怎么能在字符串“前N个Lucas数字是:”.因为现在我用一个单独的公共静态int方法计算,而不是void。这有意义吗?看,在我的第二段代码中,注释是“…或任何你有的输出函数”.我解释的是如何计算所有这些数字,所以你所要做的就是以你满意的方式打印出来。而且,这些问题听起来很像家庭作业/作业,所以你应该试着自己解决问题,这将对你未来的任务有很大帮助,相信我。是的,这是独立的家庭作业,只是你真的没有再了解它。刚开始编程,一次理解就很难了。例如,当使用system.out.print而不是一直在使用的sytem.out.println时,我前面的问题可以很容易地解决。我想我现在已经解决了。非常感谢您的帮助!您的回答支持了我的印象,即TDD不能用于除实现斐波那契之外的任何其他用途。Erm-TDD将首先涉及编写测试。我刚刚描述了分解和测试。因为提问者显然在做作业,所以我不打算只为他们编写代码。