程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> 賣桃子

賣桃子

編輯:C語言基礎知識
                                                            賣桃子  問題:    一筐桃子,第一天買掉一半又吃掉一個;第二天買掉余下的一半又吃掉一個;    第三天,第四天,第五天以後都照此辦理,最後剩下1個,問筐中共有多少個桃子.  解答:   用遞歸的方法求解,源程序如下:   #include <iostream.h>
  void main()
  {
       int i,remaining=1,day;
     cout<<"請輸入賣桃子的天數:"<<endl;
      cin>>day;
      cout<<endl;
      for(i=1;i<=day;i++)
     {
      remaining=2*remaining+2;
     }
      cout<<"原有桃子的總數為:"<<endl;
      cout<<remaining<<endl;
    }  另外一個相似的問題:                        遞推捕魚的問題 問題:
  A,B,C,D,E合伙夜間捕魚,凌晨是都疲憊不堪,各自啊在河邊的樹叢中找地方睡著了。
  日上三竿,A第一個醒來,他將魚平分為5分,把多余的一條扔回湖中,拿自己的一份回家
  去了;B第二個醒來,也將魚平分為5分,扔掉多余的一條,只拿走自己的一分;接著C,D,
  E依次醒來,也都按同樣的辦法分魚。問5人至少合伙捕到多少條魚?每個人醒來後所看到的
  魚數是多少條? //編制時間:2004年11月22日
  //主要功能:遞歸算法的事例
  //編制人:周峰
    其中的一組解也是最小解為:
    621
    496
    396
    316
    252
   
    程序的解不是唯一的,設定不同的fish[0]值就可能得到不同的解,比如說fish[0]=721時
    就可得到另一組解
    1246
    996
    796
    636
    252
  程序的原代碼:
   #include <iostream.h>
  void main()
  {
   int fish[5]={721,1,1,1,1};
   int i;
      do
   {
         
    for(i=0;i<=3;i++)
    {  if((fish[i]-1)%5==0)
       fish[i+1]=(fish[i]-1)*4/5;
     
       else
     break;
     
           }
     fish[0]+=5;
   }
         while(i<=3);
   fish[0]-=5;  for(i=0;i<=4;i++)
   {
    cout<<fish[i]<<endl;
   }
  }  
 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved