C語言之三種迴圈結構與遞迴函式的對比

2021-07-04 03:37:16 字數 2714 閱讀 9437

接下來,我來談談我對c語言中三種迴圈結構域遞迴函式的異同點的理解.

for(初始化語句;判斷條件語句;控制條件語句)

執行流程:

a:執行初始化語句;

b:執行判斷條件語句;

如果這裡是true,就繼續

如果這裡是false,迴圈就結束

c:執行迴圈體語句;

d:執行控制條件語句;

e:回到b.

a:判斷條件語句無論簡單還是複雜,結果是bool型別;

b:迴圈體語句如果是一條,可以省略大括號,但是不建議省略;

c:有分號就沒有左大括號,有左大括號就沒有分號.

#include

int main ()

printf("for迴圈:sum = %d\n",sum);

return 0;

}(1)基本格式

while(判斷條件語句)

(2)擴充套件格式:

初始化語句;

while(判斷條件語句)

a:使用上的區別

while迴圈與for迴圈可以互換,區別在於for為了迴圈而定義的變數在for迴圈結束就是在記憶體中釋放。

而while迴圈使用的變數在迴圈結束後還可以繼續使用。這是因為for迴圈中定義的變數是區域性變數,

而while迴圈的初始化變數定義在while迴圈體外,是乙個全域性變數.

b:理解上的區別

for迴圈適合於乙個範圍的判斷;

while迴圈適合次數不明確的.

#include

int main ()

printf("while迴圈:sum = %d\n",sum);

return 0;

}do while(判斷條件語句);

初始化語句;

do while(判斷條件語句);

#include

int main () while(i <= 100);

printf("do...while迴圈:sum = %d\n",sum);

return 0;

}1.通過檢視for迴圈的基本格式和while及do...while迴圈的擴充套件格式,可知三種迴圈的格式是可以統一的,都需要滿足四個條件(有時可省略其中幾個條件).

2.三種迴圈的區別

a:do...while迴圈至少執行一次迴圈體;

b:for和while必須先判斷條件是否是true,然後後才能決定是否執行迴圈體.

3.迴圈使用的注意事項(死迴圈)

a:一定要注意修改控制條件,否則容易出現死迴圈;

b:最簡單的死迴圈格式

a:while(true)

b:for(  ;  ;  )

函式型別 函式名(引數列表)

呼叫遞迴函式:函式名(初始化引數);

因為遞迴函式是函式自己呼叫自己,所以在每次呼叫函式時,都會重新建立新的變數,這些變數,以及呼叫者的位址(返回時需要),都儲存在堆疊中,

遞迴函式每遞迴一次都會造成堆疊上新增加一塊資料,即不斷的增大記憶體空間的使用量.

所以程式設計師要確保堆疊的空間夠大,能夠容納遞迴函式在遞迴的時候產生的中間結果.

/*使用遞迴遍歷下面的陣列

int array = ;

*/#include

// 遞迴函式

void arr(int array, int index)

/* 控制條件語句 */

index --;

/* 函式名(引數列表)--->遞迴函式本身 */

arr(array,index);

/* 迴圈條件語句 */

printf("%d ",array[index]);

}int main () ;

// 獲取陣列的長度 

int count = sizeof(array) / sizeof(int);

/* 呼叫遞迴函式:函式名(初始化引數) */

arr(array,count);

printf("\n");

return 0;

}即使遞迴函式可以對某些問題提供優雅和緊緻的解決方案,但是簡單的迴圈同時也是可以實現的.

另一方面遞迴函式在遞迴的過程中,不斷開闢空間,對記憶體的消耗過大,但是簡單的迴圈卻沒有這樣的問題,所以能使用迴圈解決的問題,

最好不要使用遞迴函式解決.

題目:有6個人坐在一起,問第6個人有多少歲,他說比第5個人大3歲;問第5個人有多少歲,他說比第4個人大3歲;

問第4個人有多少歲,他說比第3個人大3歲;問第3個人有多少歲,他說比第2個人大3歲;

問第2個人有多少歲,他說比第2個人大3歲;問最後1個人,他說是15歲.那麼,第6個人多少歲?

#include

int main ()

printf("第6個人%d歲.\n",age);

return 0;

}#include

int main ()

printf("第6個人%d歲.\n",age);

return 0;

}#include

int main () while(i < 6);

printf("第6個人%d歲.\n",age);

return 0;

}#include

// 遞迴函式

int age(int a)

/* 這一句集中了迴圈體語句和控制條件語句 */

return 3 + age(a - 1);

}int main ()

C語言中的三種迴圈

在c語言中迴圈可分為3種,while迴圈 do while迴圈 for 迴圈。一 while迴圈 while即 首先檢查啟動迴圈的條件是否滿足,當條件滿足時,不斷地重複迴圈體內的語句,直到不滿足條件就退出。while迴圈基本形式 while 條件 eg 1 輸入任意個int型,整數並判斷其位數 in...

C語言中的三種迴圈語句

目錄 while即 首先檢查啟動迴圈的條件是否滿足,當條件滿足時,不斷地重複迴圈體內的語句,直到不滿足條件就退出。while迴圈基本形式 while 條件 eg 1 輸入任意個int型,整數並判斷其位數 include int main printf d n n return0 eg 2 判斷輸入的...

C 基礎語言之(三C 中四種cast轉換)

說起型別轉換,我們常見的就是c中的隱式型別轉換和顯式型別轉換 1.隱式型別轉換 隱式轉換就是系統預設的 不需要加以宣告就可以進行的轉換。在隱式轉換過程中,編譯器無需對轉換進行詳細檢查就能夠安全地執行轉換。int i 1 float f i 2.顯式型別轉換 強制型別轉換 區別在於當向下轉換時如果不顯...