一、尾遞迴優化
1.遞迴的一種特殊形式
2.呼叫自身後無其他的操作
3.tailrec關鍵字提示編譯器尾遞迴優化
二、具體的來看看一下**說明
package net.println.kotlin.chapter5.tailrecursive
/** * @author:wangdong
* @description:
*//**定義乙個節點的list的集合*/
data class
listnode
(var value: int, var next: listnode ?= null)
/**定義乙個查詢節點的方法*/
/** * 簡單的尾遞迴
* head可能為空
* listnode可能為空
* 對尾遞迴做優化,只需要加乙個關鍵字tailrec
*/tailrec fun findlistnode(head: listnode ?,value: int):listnode ?
/**階乘*/
fun factorial(n: long):long
/**定義乙個樹的節點*/
data class
treenode
(val value: int)
/**定義乙個查詢的方法*/
/** * 傳入乙個根節點root
* 傳入要查詢的值value
* 返回查詢到的節點
*/fun findtreenode(root: treenode ?, value: int):treenode?
fun main(args: array)
//查詢倒數第二個節點,找到了就把它的值打出來
println(findlistnode(head,max_node_count - 2) ?.value) //8
}
好啦,結束啦 Kotlin尾遞迴優化
尾呼叫 tail call 是函式式程式設計的乙個重要概念,本文介紹它的含義和用法。如果乙個函式中所有遞迴形式的呼叫都出現在函式的末尾,我們稱這個遞迴函式是尾遞迴的。當遞迴呼叫是整個函式體中最後執行的語句且它的返回值不屬於表示式的一部分時,這個遞迴呼叫就是尾遞迴。簡單地說,尾遞迴就是某個函式的最後一...
Kotlin 尾遞迴優化
尾遞迴就是函式在呼叫完自己之後沒有其他操作的遞迴,是遞迴的一種特殊形式。舉個例子,計算斐波那契數列第 n 項 的遞迴演算法有哪些?斐波那契數列第 0 1 位都是 1,從第二位開始,每項是前兩位之和,因此用遞迴演算法很容易就能實現出來了 fun fib1 n int int 這種寫法雖然遞迴呼叫是在方...
Kotlin筆記19 尾遞迴優化
前面了我學習了kotlin的遞迴,那麼我還接觸到了kotlin的尾遞迴優化。什麼是尾遞迴優化呢?帶著疑問更好去學習。1.尾遞迴是遞迴的一種特殊形式 2.呼叫自身無其他操作 3.tailrec關鍵字提示編譯器尾遞迴優化 demo中有使用tailrec關鍵字進行提示編譯器尾遞迴優化。尾遞迴演示 實現方式...