關於遞歸(轉)

原文鏈接:https://blog.csdn.net/quickzhao3223/article/details/80988797

節選:
證明: 一棵完全有k層的完全二叉樹有2^k-1個節點。

1)基準點:k=1 , 節點個數爲2^k-1 = 1,很顯然成立;
2)假設,對k=n, 這個結論仍然成立,2^n-1;
3) 要證明,對 k =n+1時,這個結論仍然成立 2^(n+1)-1
根據假設,現在的總結點是: (2^n-1)*2+1 = 2^(n+) - 1

再次來審視一下遞歸:
到底什麼是遞歸?
一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型複雜的問題層層轉化爲一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重複計算,大大地減少了程序的代碼量。
遞歸能解決什麼問題?
有很多數學公式可以使用遞歸(recursive)的方式來聲明:
F(0) = 0 X = 0
F(X) = 2F(X-1)+X^2 X > 0

怎麼來寫一段遞歸代碼?
作爲練習;

遞歸一般來說要考慮兩個基本法則:
1)基準情形(base case);必須得有最基準的情形,不用遞歸就能解決;
2)不斷推進(making progress);對於那些需要遞歸求解的情形,遞歸調用必須總能朝着基準情形的方向推進;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章