嘿伙计们,我是一名初学程序员,需要在java中编写一个应用程序来编写一个数字,然后输出前n个Lucas数字.例如,当输入7时,它输出:2,1,3,4,7,11,18.
为了清楚起见,卢卡斯数字被定义为:
如果n = 0,则为2
如果n = 1,则为1
如果n> 1,则L(n-1)+ L(n-2)
我真的不确定如何在java中编程.因为我无法将其翻译成java代码.我已经考虑了一段时间,但仍然无法弄明白.此外,当我有计算第N个卢卡斯数的代码时,我现在将如何输出所有第一个Lucan数字直到第N个数字.你们中的一些人可以帮助我以正确的方式获取或给我提示吗?非常感谢!
你对卢卡斯数的定义是递归的,即,为了计算第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);
}
Run Code Online (Sandbox Code Playgroud)
但是,你只需打印数字,不是吗?实际上,这很容易.
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;
}
Run Code Online (Sandbox Code Playgroud)
这个想法是保持最后两个数字,你需要计算接下来的两个数字,总是在手边.
PS:这些Lucas数字就像具有不同起始值的Fibonacci数字,因此Fibonacci数的任何算法都可以.如果你真的擅长数学,你甚至可以尝试为卢卡斯数找到一个封闭的公式,但它肯定超出了高中数学(搜索标签将是"具有常系数的线性差分方程").
归档时间: |
|
查看次数: |
10814 次 |
最近记录: |