首先我來談一下遞迴的定義:遞迴過程一般通過函式或子過程來實現。遞迴方法:在函式或子過程的內部,直接或者間接地呼叫自己的演算法。可以簡單的表示成fun( r ) 。當然這個遞迴是個死迴圈,永遠不停的遞迴,所以對於遞迴,必須有乙個出口,用來結束遞迴函式的呼叫,並返回結果,類似於迴圈結構的終止條件。所以遞迴和迴圈也可以是等價的。
下面我們來討論一下遞迴的優缺點:
優點很明顯,**簡短。
缺點:執行效率低下;容易造成棧的溢位。
下面我就以c++程式為例,通過使用二分法求乙個方程如
x * x - 10 * x
在某個區間上的根。**如下:
#include
#include using namespace std;
inline float fx(float x)
float fun(int l, int r)
//此時中間變數的函式值與右側變數的函式值異號,說明在這兩個端點之間必定有乙個方程的根。 此時,右側變數不變,只需要將中間變數
//
轉換成新的左側變數進行新一輪的遞迴操作即可。
else //(ym * yr <0) }
int main()
cout << "最終求得的方程的解是:" << fun(l, r) << endl;
return 0;
}
二分演算法比較容易理解:對於區間[a,b]上連續不斷且f(a)·f(b)<0的函式y=f(x),通過不斷地把函式f(x)的零點所在的區間一分為二,使區間的兩個端點逐步逼近零點,進而得到零點近似值的方法叫二分法。當採用二分法時,必須保證所選擇的兩個端點的函式值的乘機必須是異號的,這樣才能保證在這個區間內方程必有一根。
通過遞迴方式我們可以求得這個方程的近似解。在下一節的部落格裡,我們繼續以這個方程為例,通過採用陣列的方式來實現,同時比較這兩種實現方式的效率。
以下是程式的執行結果的截圖:
C 錯誤顯示控制項使用(以登陸為例)
在應用程式設計時候,我們經常需要判斷使用者輸入的資料是否合法,不合法給出提示,一般提示都是用messagebox,但是怎樣達到類似下面的效果呢?右邊有個小紅嘆號,滑鼠放上還有資訊提示。這個就需要使用c 提供的錯誤顯示控制項了。在工具欄找到errorprivoder控制項拖進來,發現跟timer控制項...
C語言 函式指標(以signal函式為例)
在學習unix環境高階程式設計,訊號中有乙個函式signal 定義中涉及到函式指標。include typedef void sighandler t int sighandler t signal int signum,sighandler t handler int funcptr int in...
C語言函式的遞迴
1.遞迴條件 採用遞迴方法來解決問題,必須符合以下三個條件 1 可以把要解決的問題轉化為乙個新問題,而這個新的問題的解決方法仍與原來的解決方法相同,只是所處理的物件有規律地遞增或遞減。說明 解決問題的方法相同,呼叫函式的引數每次不同 有規律的遞增或遞減 如果沒有規律也就不能適用遞迴呼叫。2 可以應用...