跳到主要内容

Kotlin程序显示斐波那契数列

斐波那契数列是一个数列,其中下一个项是前两个项的和。斐波那契数列的前两项是0和1。

斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, ...

示例1:使用for循环显示斐波那契数列

fun main(args: Array<String>) {
val n = 10
var t1 = 0
var t2 = 1

print("前 $n 项: ")

for (i in 1..n) {
print("$t1 + ")

val sum = t1 + t2
t1 = t2
t2 = sum
}
}

当您运行该程序时,输出如下:

10 项: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 +

在上面的程序中,第一个 (t1) 和第二个 (t2) 项分别初始化为斐波那契数列的前两项0和1。

与Java不同,我们使用 范围in 运算符来迭代至 n(项数),并显示在变量 t1 中存储的前两项的和。

以下是等效的Java代码:Java程序:显示斐波那契数列

您还可以使用Kotlin的while循环生成斐波那契数列。

示例2:使用while循环显示斐波那契数列

fun main(args: Array<String>) {
var i = 1
val n = 10
var t1 = 0
var t2 = 1

print("前 $n 项: ")

while (i <= n) {
print("$t1 + ")

val sum = t1 + t2
t1 = t2
t2 = sum

i++
}
}

输出与上面的程序相同。

在上面的程序中,与for循环不同,我们必须在循环体内增加 i 的值。

虽然这两个程序在技术上都是正确的,但在这种情况下最好使用for循环。这是因为迭代次数(从1到 n)是已知的。

示例3:显示斐波那契数列直到给定的数字(而不是项数)

fun main(args: Array<String>) {
val n = 100
var t1 = 0
var t2 = 1

print("直到 $n: ")
while (t1 <= n) {
print("$t1 + ")

val sum = t1 + t2
t1 = t2
t2 = sum
}
}

当您运行该程序时,输出如下:

直到 1000 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + 55 + 89 +

此程序不是显示直到特定项数,而是显示直到给定的数字(100)。

为此,我们只需将上一两个数字的和(t1)与 n 进行比较。

如果 t1 小于或等于 n,则打印 t1。否则,我们已经完成显示所有项。