在此程序中,您將學習使用for和while循環(huán)在Kotlin中顯示斐波那契數(shù)列。您將學習如何顯示序列,直到顯示特定術語或數(shù)字。
斐波那契數(shù)列是一個系列,其中下一項是前兩個項的總和。斐波那契數(shù)列的前兩個項是0,然后是1。
The Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, ...
fun main(args: Array<String>) { val n = 10 var t1 = 0 var t2 = 1 print("First $n terms: ") for (i in 1..n) { print("$t1 + ") val sum = t1 + t2 t1 = t2 t2 = sum } }
運行該程序時,輸出為:
First 10 terms: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 +
在上面的程序中,第一項(t1)和第二項(t2)分別初始化為斐波那契數(shù)列0和1的前兩項。
與Java不同,我們使用了range和in運算符來迭代直到n(項數(shù))顯示存儲在變量t1中的前兩個項之和。
以下是等效的Java代碼:顯示斐波那契系列的Java程序。
您還可以在Kotlin中使用while循環(huán)生成斐波那契數(shù)列。
fun main(args: Array<String>) { var i = 1 val n = 10 var t1 = 0 var t2 = 1 print("First $n terms: ") while (i <= n) { print("$t1 + ") val sum = t1 + t2 t1 = t2 t2 = sum i++ } }
輸出與上述程序相同。
在上面的程序中,與for循環(huán)不同,我們必須增加循環(huán)體內(nèi) i 的值。
盡管兩個程序在技術上都是正確的,但在這種情況下最好使用for循環(huán)。這是因為迭代次數(shù)(從1到n)是已知的。
fun main(args: Array<String>) { val n = 100 var t1 = 0 var t2 = 1 print("Upto $n: ") while (t1 <= n) { print("$t1 + ") val sum = t1 + t2 t1 = t2 t2 = sum } }
運行該程序時,輸出為:
Upto 100: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + 55 + 89 +
該程序?qū)⑿蛄酗@示到給定的數(shù)字(100),而不是顯示序列直至指定的數(shù)字。
為此,我們只需要比較最后兩個數(shù)字(t1)和n。
如果t1小于等于n,輸出t1。否則,我們就完成了所有術語的顯示。