在此程序中,您將學(xué)習(xí)使用for和while循環(huán)在Kotlin中顯示斐波那契數(shù)列。您將學(xué)習(xí)如何顯示序列,直到顯示特定術(shù)語或數(shù)字。
斐波那契數(shù)列是一個(gè)系列,其中下一項(xiàng)是前兩個(gè)項(xiàng)的總和。斐波那契數(shù)列的前兩個(gè)項(xiàng)是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 } }
運(yùn)行該程序時(shí),輸出為:
First 10 terms: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 +
在上面的程序中,第一項(xiàng)(t1)和第二項(xiàng)(t2)分別初始化為斐波那契數(shù)列0和1的前兩項(xiàng)。
與Java不同,我們使用了range和in運(yùn)算符來迭代直到n(項(xiàng)數(shù))顯示存儲(chǔ)在變量t1中的前兩個(gè)項(xiàng)之和。
以下是等效的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 的值。
盡管兩個(gè)程序在技術(shù)上都是正確的,但在這種情況下最好使用for循環(huán)。這是因?yà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 } }
運(yùn)行該程序時(shí),輸出為:
Upto 100: 0 + 1 + 1 + 2 + 3 + 5 + 8 + 13 + 21 + 34 + 55 + 89 +
該程序?qū)⑿蛄酗@示到給定的數(shù)字(100),而不是顯示序列直至指定的數(shù)字。
為此,我們只需要比較最后兩個(gè)數(shù)字(t1)和n。
如果t1小于等于n,輸出t1。否則,我們就完成了所有術(shù)語的顯示。