首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中计算Lucas数

如何在Java中计算Lucas数
EN

Stack Overflow用户
提问于 2010-09-25 19:44:39
回答 3查看 11.7K关注 0票数 3

我是一个初级程序员,需要在java中编程一个应用程序,要求一个数字,然后打印前n个数字的卢卡斯数字。例如,当放入7时,它输出: 2,1,3,4,7,11,18。

为了清楚起见,lucas数被定义为:

2,如果n=0

1,如果n=1

L(n-1) + L(n-2)若n>1

我真的不知道如何在java中编写这个程序。因为我不能把它翻译成java代码。我已经想了一段时间了,但还是想不通。另外,当我有计算第N个lucas数的代码时,我现在将如何输出直到第N个数为止的所有第一个Lucan数。你们中的一些人可以帮助我正确的gte方式或给我一些提示吗?非常感谢!

EN

回答 3

Stack Overflow用户

发布于 2010-09-25 19:54:56

你对Lucas数的定义是递归的,也就是说,要计算第N个lucas数,你已经需要知道N-1和N-2。

一种朴素的方法是

代码语言:javascript
复制
public int lucas(int N) {
    if( N == 0 ) return 2;
    if( N == 1 ) return 1;
    return lucas(N-1) + lucas(N-2);
}

但是,你只需要打印数字,不是吗?实际上,这很容易。

代码语言:javascript
复制
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;
 }

这个想法是将最后两个数字保存在手边,您需要它们来计算下两个数字。

PS:这些Lucas数就像具有不同起始值的Fibonacci数,所以Fibonacci数的任何算法都可以。如果你真的擅长数学,你甚至可以尝试为Lucas数找到一个封闭的公式,但这绝对超出了高中数学的范畴(搜索标签将是“常系数线性差分方程”)。

票数 5
EN

Stack Overflow用户

发布于 2010-09-25 19:49:58

如果你不确定如何做整个事情,把问题分解成更小的部分,直到你可以开始。

试着处理每个案例,一次一个。实现'2 if n=0‘的情况,测试它是否正常工作。计算很简单,但您也必须编写调用您的实现的代码。这个简单的案例可以帮助您检查它周围的代码是否正常工作。

然后实现下一个,检查它是否仍然有效,实现最后一个。随着你的脚步,它会变得越来越清晰。

票数 1
EN

Stack Overflow用户

发布于 2013-06-14 23:27:29

如果有人正在寻找一个公式,并且发生在这个页面上,那么这可能会有所帮助。在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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3793647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档