1樓:匿名使用者
這是一個函式遞迴呼叫與返回的問題
程式分析如下:
fun(20)
if(10>0) fun(8) /*20/2=10 20/2-2=8*/
if(4>0) fun(2) /*8/2=4 8/2-2=2*/
if(1>0) fun(-1) /*2/2=1 2/2-2=-1*/
if(-1/2>0)
printf(-1)
printf(2)
printf(8)
printf(20)
1.上面的程式就是將遞迴呼叫fun函式了 後你就可以發現他的列印順序是-1 然後2 然後8 然後20
2.你有沒有注意到我寫程式時的格式<1>我將每個if都左縮排了 之所以要這麼做的原因 是為了說明每個if都是屬於每一次fun函式呼叫的第一句語句<2>我將每個printf都和if對齊 之所以要這麼做的原因 是為了說明每次呼叫fun函式 函式中的if語句執行完畢後 都要執行一次printf語句
3.返回的思想:分析遞迴呼叫的問題 要記住一句話"被調函式執行完了 要返回到主調函式的下面一句語句 繼續執行" 看程式左右邊的if(-1/2>0) 這個if條件不成立 不能再次呼叫fun 執行printf(-1) 當printf(-1)執行完畢後 就意味著 這次呼叫fun(-1)的執行完畢 那就必須返**用fun(-1)的主調函式fun(2)的下一句語句printf(2)繼續執行 後面的 printf(8)printf(20)都是同樣的道理
2樓:
fun(int x)
main()
修改成這樣就容易看明白了,你看下吧
3樓:匿名使用者
#include
void fun(int x)
void main()
你這樣看就知道結果了。。其實是列印了n次的。
很簡單的C語言程式,一個很簡單的C語言程式
不要先把總結果求出來再取最後一個數字 因為最後一個數字肯定有數字的個位數決定 比如13 13,就求3 13,但是每次記錄最後一個數字 3 3 9 9 9 3 27 7 7 3 21 1 1 3 3 3 3 3 9 然後就可以看出是個最後結果處於每4次一個迴圈 因為13x13x13.x13總共有12個...
簡單的C語言選擇題求解答,一個簡單的C語言選擇題求解答
int型別數 抄據佔2個位元組,long型別資料 包括unsigned long型資料 所佔位元組數為4 應不小於int型別資料的位元組數 一個double型別資料佔8個位元組 一個char型別資料佔1個位元組。選c long int應當是int的2倍字寬即4位元組整型 c語言中int佔用2個位元組...
幫忙寫很簡單的批處理檔案,幫忙寫一個很簡單的批處理檔案
不知什麼用途,為了省時應該可以縮小些查詢範圍的 路徑 型別 非隱藏只讀等 以下 中的日期格式如不符請自已修改 或追問 如修改的是隱藏或只讀檔案,則之後會設定屬性為隱藏及只讀,不會修改本批處理檔案的日期 echo off for f i in date do set td i date 2014 01...