1樓:
#include
void print(int n);\\函式宣告
void print_n(int n);\\函式宣告
main()
\\主函式呼叫print(int n)函式
void print(int n)\\print(int n)函式體
void print_n(int n)\\print_n(int n)函式體
首先從主函式開始執行,print(4),然後呼叫print(int n)函式,此時n=4,不滿足if(n==0),故不返回,執行下一條語句: print_n(n);,呼叫print_n(int n)函式
同樣,n=4,不滿足if(n==0),故不返回,列印乙個4後執行下一條,print_n(n-1);即print_n(3),呼叫自身,同上面的分析,會列印出3然後print_n(2)......
直到n=1時, if(n>1)不成立,執行者else列印出回車,所以會輸出4321
輸出後又回到了print(int n)函式的if(n>0) print(n-1);同上面的分析會輸出
321回車
全部執行完後會輸出:
4321(回車)
321(回車)
21(回車)
1(回車)
(回車)
2樓:匿名使用者
print和print_n兩個函式都是遞迴呼叫。
3樓:匿名使用者
1)先執行print(4),從而有執行print_n(4),在print_n中當n>1的時候,不斷巢狀呼叫,只至n=1。因此結果為4321
2)第一編完成之後,因為n=3>0,所以繼續完成類似第1)步的過程,得到輸出結果為321
3)同理,有結果為21,
4)同時有結果1
5)此時n=0,在print中滿足if(n==0) return,故結束程式的執行
因此綜上,程式執行結果是
4321
321211
C語言問題,求高手幫忙,C語言問題,求高手幫忙!!
1.輸入輸出問題,在輸入整數或浮點數後面直接輸入字元或字串,要清除一下回車號,或都在輸入整數後直接清空快取,再讀取內容 2.越界問題,修正問題1後,如果記憶體裡沒有連繼的 0 字元,你這程式會嚴重越界 語句 k j 1 前加一句 if c j 0 break 到尾就不要再迴圈了,防止越界 改完後的效...
C語言題目 請C語言高手幫幫忙
include define max 30 定義最長可輸入的數的長度 char num max 定義乙個陣列,用於存放要輸入的字元 main p num p指向陣列第乙個元素 pr p i 1 pr指向陣列最後乙個元素,不含 0 while j i 2 else break 不一樣則退出迴圈 if ...
c語言 高手請指教
你這個程式是不完整的,當然不能生成 從你的 中可以看出,要實現的功能是 在螢幕上輸入3個整數,然後求出它們的和與積 add a,b,c mul a,b,c 是兩個自定義的函式,但是在你的 中,並沒有這兩個函式的宣告和實現。另外,你的程式也沒有輸出 首先來說這肯定不是乙個完整的程式,從這個程式本身來看...