例題1:一個射擊運動員打靶,靶一共有10環,連開10槍打中90環的可能性有多少種?請用遞歸算法編程實現。[中國某著名通信企業H面試題]
解析:靶上一共有10種可能——1環到10環,還有可能脫靶,那就是0環,加在一起共11種可能。這是一道考循環和遞歸的面試題。我們在這個程序中將利用遞歸的辦法實現打靶所有可能的演示,並計算出結果。(可以連續用10個循環語句來表示程序)
for (i1=0;i1<=10;i1++)
{
for (i2=0;i2<=10;i2++)
{
for (i3=0;i3<=10;i3++)
{
......
for (i10=0;i10<=10;i10++)
{
if(i1+i2+i3+...+i10=90)
Print();
}
......
}}}
注意2個條件:
(1)如果出現這種情況,即便後面每槍都打10環也無法打夠總環數90,在這種情況下就不用再打了,則退出遞歸。
(2)如果滿足條件且打到最後一次(因爲必須打10次)
代碼: