遞歸函數的基本思想如下:
遞歸就是方法自己調用自己 遞歸特點: 有臨界點 當壹個方法執行完畢,或者遇到retrun,就會返回,函數就是出棧。?
待求解問題的解 輸入變量x的函數f(x),通過尋找函數g( ), 使得f(x) = g(f(x-1))。
且已知f(0)的值, 就可以通過f(0)和g( )求出f(x)的值。
擴展到多個輸入變量x, y, z等, x-1也可以推廣到 x - x1 , 只要遞歸朝著 “出口” 的方向即可。
把壹個問題劃分成壹組子問題, 依次對這些子問題求解。
子問題之間是橫向的, 同類的關系 遞歸: 把壹個問題逐級分解成子問題。
子問題與原問題之間是縱向的, 同類的關系。
語法形式上: 在壹個函數的運行過程中, 調用這個函數自己。
直接調用: 在fun()中直接執行fun()。
間接調用: 在fun1()中執行fun2(); 在fun2()中又執行fun1() 遞歸與枚舉的區別。
遞歸的三個要點:
遞歸式:如何將原問題劃分成子問題。?
遞歸出口: 遞歸終止的條件, 即最小子問題的求解,可以允許多個出口 。
界函數: 問題規模變化的函數, 它保證遞歸的規模向出口條件靠攏,求階乘的遞歸程序。