gpt4 book ai didi

java - 如何在 Java 中计算卢卡斯数

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:56:55 26 4
gpt4 key购买 nike

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

为了清楚起见,lucas numbers 定义为:

2 如果 n = 0

1 如果 n = 1

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

我真的不确定如何用 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);
}

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

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 数的算法都可以。如果你真的很擅长数学,你甚至可以尝试找到卢卡斯数的封闭公式,但这绝对超出了高中数学的范围(搜索标签是“具有常系数的线性差分方程”)。

关于java - 如何在 Java 中计算卢卡斯数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3793647/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com