當前位置:
首頁 > 知識 > C語言小程序——令人頭疼的年齡問題!

C語言小程序——令人頭疼的年齡問題!


問題描述


有5個人坐在一起,問第5個人多少歲,他說比第4個人大2歲。問第4個人多少歲,他說比第3個人大2歲。問第3人多少歲,他說比第2個人大2歲。問第2個人多少歲,他說比第1個人大2歲。最後問第1個人,他說他是10歲。編寫程序,當輸入第幾個人時求出其對應的年齡。


用C語言遞歸來解決,具體思路自己分析,只有自己通過分析得出來的,才能記得住!


C語言小程序——令人頭疼的年齡問題!



想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙


下面是完整的代碼:

#include


int age(int n)


{


int x;


if(n == 1)

x=10;


else


x=age(n-1)+2;


return x;


}

int main()


{


int n;


printf("請輸入n值:");

scanf("%d", &n);


printf("第%d個人的年齡為%d
", n, age(n));


return 0;


}


運行結果:


請輸入n值:5


第5個人的年齡為18


知識點補充


由該題的分析過程可知,遞歸的問題都可以分為「回推」和「遞推」兩個階段。而且必須存在一個能夠結束遞歸過程的條件,如本題中的age(l)=10,否則遞歸過程會無限制地進行下去而無法結束。


下面對遞歸法做下總結。


遞歸是設計和描述演算法的一種強有力的工具。能夠釆用遞歸來描述的演算法通常具有如下的特徵:為求解規模為n的問題,首先要將它分解成規模較小的問題,然後通過這些小問題的解,能夠方便地構造出大問題的解。


同時,這些規模較小的問題也能夠採取同樣的分解方法分解成規模更小的問題,並能夠通過這些更小的問題的解構造出規模較大的問題的解。特別地,當問題規模n=0或n=1時,能直接獲得問題的解。


遞歸演算法的執行過程分為「回推」和「遞推」兩個階段:


在回推階段,是把較複雜的問題(規模為n)的求解遞推到比原問題簡單一些的問題(規模小於n)的求解。例如本例中,要求解age(n),先把它遞推到求解age(n-l),而要計算age(n-1),又必須先計算age(n-2),依次類推,直到計算age(1)為止。需要注意的是,在遞推階段,必須要有能夠終止遞歸的條件。如本例中n為1時,遞推可終止。


在遞推階段,當獲得最簡單情況的解時,如本題中得到age(1)的值,逐級返回,依次得到較複雜問題的解,最終獲得所求問題的解。


在用C語言編寫遞歸函數時需要注意,函數中定義的局部變數和形式參數只在當前的調用層有效,當回推到簡單問題時,原來調用層中的局部變數和參數都被隱藏起來。每一個簡單問題層中都有自己的局部變數和參數。


想要一起學習C++的可以加裙六二六八七一九一六,裙內有各種資料滿足大家,歡迎加裙

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 C加加 的精彩文章:

C語言 編程 20幾歲學和初中開始學習的差距

TAG:C加加 |

您可能感興趣

沒有語言的怪人
程序猿的崛起,一篇文章看懂編程語言
十句經典語言,關於人生!
語言不是問題
C語言編程字元貪吃蛇
人類靈魂的語言「文字」
傷人最深的永遠是一個人的語言!
C語言編程入門經典N個程序,你會嗎?
童年回憶!小丸子長大了!人美聲音好,精通多國語言!
看穿男人心理的六種肢體語言!
從女人的肢體語言,看透一個女人的感情
C 的語言編程
語言不通造成的六個笑話:馬刺多國語言麥迪頭大,白邊見人叫爸爸
傷人最深的永遠是這兩個字:語言
小小年紀說話為何這麼狠?語言的力量如何破解?
影響教師的10句座右銘,語言不華麗,但句句引人深思…… | 精選
怎樣解決編程語言之間的差異性問題?
國產編程語言《易語言》是怎麼一步一步變遊戲外掛「代言人」的?
神奇的語言,句句精闢!
超「諷刺」的人性圖:被舌頭勒死的女人,殺人於無形的語言!