遞迴呼叫:函式的遞迴呼叫,就是函式在執行的時候自動呼叫自己!
功能:當我們把乙個大問題按照某種解決方案細化為若干個小問題的時候,結果我們發現這些小問題的解決方案又和前面大問題的解決方案是一樣的!
語法格式: function 函式名(){
//遞迴出口(不要忘了,不然進入死迴圈)
//呼叫其他函式;
函式名();
函式名();
所以,函式的遞迴有兩個要素:
1, 遞迴出口:就是什麼時候停止自己呼叫自己
2, 遞迴點:就是什麼時候開始自己呼叫自己
案例:斐波那契數列,即前兩項已知,從第三項開始,每一項都是前兩項的和!
若前兩項為1,則思路如下
1 (n<=2) (出口)
f(n)
f(n-1)+f(n-2) (n>=2) (遞迴點)
function f($n){
//遞迴出口
if($n == 1||$n == 2){
return 1;
//遞迴點(由於就剩下一種結果了,我們可以直接使用即可)
$s=f($n-1)+f($n-2);
return $s
echo f($_get[『n』]);
回味一下過程:
特點:簡單,但消耗記憶體,會占用大量的內在空間,當然執行較大的數會造成速度很慢
優化過程,就是乙個步驟的重複執行,降低空間,引用我們的迭代思想
迭代思想:從前往後來解決問題,體現在**上,其實就是乙個步驟的重複的執行,也就是迴圈結構!
做演算法的過程中,我們首先要把思想邏輯寫一下
這樣可以直接寫**了,甚至一氣呵成
<?php
function f($first,$second,$n){
//已知前兩項
$before1 = $second;
$before2 = $first;
//條件判斷前兩項
if($n == 1){
return $first;
if($n == 2){
return $second;
for($i=3;$i<$n;$i++){
$num = $before1 + $before2;
$ before2=$before1;
$before1=$num;
return $num
echo f(1,1,$_get[『n』]);
演算法思想並不是一朝一夕的,多加練習並總結,才是王道。
函式的遞迴呼叫
乙個函式在它的函式體內呼叫它自身稱為遞迴呼叫。這種函式稱為遞迴函式。c語言允許函式的遞迴呼叫。在遞迴呼叫中,主調函式又是被調函式。執行遞迴函式將反覆呼叫其自身。每呼叫一次就進入新的一層。例如有函式f如下 int f int x 這個函式是乙個遞迴函式。但是執行該函式將無休止地呼叫其自身,這當然是不正...
函式的遞迴呼叫
遞迴函式 呼叫自己本身的函式叫遞迴函式 實現如下 main.c define crt secure no warnings include include 遞迴列印字串逆序 int reverse char str if str 0 判斷遞迴結束條件 reverse str 1 printf c s...
函式的遞迴呼叫
函式的遞迴呼叫 是函式巢狀呼叫的一種特殊形式 具體是指 在呼叫乙個函式的過程中又直接或者間接地呼叫到本身 直接呼叫本身 deff1 print 是我是我還是我 f1 f1 間接接呼叫本身 deff1 print f1 f2 deff2 print f2 f1 f1 一段 的迴圈執行的方案有兩種 方式...