菜鳥每天練習 之 遞歸算法(打靶)

例題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次)

代碼:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章