C語言習(xí)題:蘋果裝盤問題!用遞歸如何求解?
2021-11-16 17:02 作者:C語言編程__Plus | 我要投稿

一、問題提出
問題:把m個蘋果放入n個盤子中,允許有的盤子為空,共有多少種方法?
注:
5,1,1和1 5 1屬同一種方法
m,n均小于10
二、算法分析
設(shè)f(m,n) 為m個蘋果,n個盤子的放法數(shù)目,則先對n作討論,
當(dāng)n>m:必定有n-m個盤子永遠(yuǎn)空著,去掉它們對擺放蘋果方法數(shù)目不產(chǎn)生影響。即if(n>m) f(m,n) = f(m,m)
當(dāng)n<=m:不同的放法可以分成兩類:
有至少一個盤子空著,即相當(dāng)于f(m,n) = f(m,n-1);
所有盤子都有蘋果,相當(dāng)于可以從每個盤子中拿掉一個蘋果,不影響不同放法的數(shù)目,即f(m,n) = f(m-n,n).而總的放蘋果的放法數(shù)目等于兩者的和,即 f(m,n) =f(m,n-1)+f(m-n,n)
遞歸出口條件說明:
當(dāng)n=1時,所有蘋果都必須放在一個盤子里,所以返回1;
當(dāng)m==0(沒有蘋果可放)時,定義為1種放法;
三、程序設(shè)計
四、程序結(jié)果顯示
示例:9個蘋果9個盤子

如果你也喜歡編程,想學(xué)C/C++的話!如果你也想讓自己成為一個具有真材實料的厲害的程序員,不妨從現(xiàn)在開始!
微信公眾號:C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項目實戰(zhàn)視頻、項目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!

標(biāo)簽: