免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
Board logo

標題: c++練習題10 [打印本頁]

作者: Smallcat    時間: 2018-12-17 19:08     標題: c++練習題10

1545044585478.jpg
  1. #include<stdio.h>
  2. #include<math.h>

  3. double recurs(double n){
  4.         if(n==2){
  5.                 return 1.0/2;
  6.         }
  7.         return 1/(n*(n-1)) + recurs(n-1);
  8. }

  9. double recurpi(double n){
  10.         double pro;
  11.         if(n==0){
  12.                 return 4;
  13.         }
  14.         pro = (2*n+1)*(2*n+1);
  15.         return (pro-1)/pro * recurpi(n-1);
  16. }

  17. int main(void){
  18.         double n,i=1;
  19.         printf("輸入n for a小題:");
  20.         scanf("%lf",&n);
  21.         printf("%lf\n",recurs(n));
  22.        
  23.         printf("輸入n for b小題:");
  24.         scanf("%lf",&n);
  25.         printf("%lf\n",recurpi(n));
  26.        
  27.         //加分題
  28.         do{
  29.                 i++;
  30.         }while(fabs(M_PI - recurpi(i)) >0.005);
  31.        
  32.         printf("when n = %lf , approximated value πreduces to 0.005.\n",i);
  33.         printf("approximated value π= %lf\n",recurpi(i));
  34.         printf("constant π= %lf",M_PI);
  35. }
複製代碼


圖片附件: 1545044585478.jpg (2018-12-17 19:08, 159.16 KB) / 下載次數 632
http://smallcat.utmall.com/attachment.php?aid=473&k=47198810cf13f5e2d6cea935d8dd3112&t=1713556246&sid=ss5kbQ


作者: Smallcat    時間: 2018-12-17 19:09

1545044619839.jpg
  1. #include<stdio.h>
  2. double power(int x, int y){
  3.         if(y<0){
  4.                 return 1.0/power(x,-y);
  5.         }
  6.         if(y==0){
  7.                 return 1;
  8.         }
  9.         if(y==1){
  10.                 return x;
  11.         }
  12.         return x * power(x,y-1);
  13. }

  14. int main(void){
  15.         int x,y;
  16.         printf("輸入x和y: ");
  17.         scanf("%d %d",&x,&y);
  18.         printf("\n%d 的 %d 次方 = %lf",x,y,power(x,y));
  19. }
複製代碼


圖片附件: 1545044619839.jpg (2018-12-17 19:08, 106.08 KB) / 下載次數 634
http://smallcat.utmall.com/attachment.php?aid=474&k=3f1bcff727e5f87456af7e65260b6a97&t=1713556246&sid=ss5kbQ


作者: Smallcat    時間: 2018-12-17 19:09

1545044653171.jpg
  1. #include<stdio.h>
  2. int walk(int n){
  3.         if(n==1){
  4.                 return 1;
  5.         }
  6.         if(n==2){
  7.                 return 2;
  8.         }
  9.         if(n==3){
  10.                 return 4;
  11.         }
  12.         return walk(n-1) + walk(n-2) + walk(n-3);
  13. }

  14. int main(void){
  15.         int n;
  16.         printf("輸入總步數:");
  17.         scanf("%d",&n);
  18.         printf("有%d種方法",walk(n));
  19. }
複製代碼


圖片附件: 1545044653171.jpg (2018-12-17 19:09, 45.68 KB) / 下載次數 664
http://smallcat.utmall.com/attachment.php?aid=475&k=e861b914cf1d8a3f07748b76292a702a&t=1713556246&sid=ss5kbQ


作者: Smallcat    時間: 2018-12-17 19:10

前言:此題由 艾菇 提供,感謝給力支援。

1545044702138.jpg
1545045105620.jpg
  1. #include<stdio.h>
  2. void walk(int step,int remain,int *list,int idx){
  3.         /*step   現在要走一步還是兩步
  4.           remain 現在剩下幾步
  5.           list   紀錄這次要走幾步
  6.           idx    紀錄這次是第幾次移動
  7.         */
  8.         int i;
  9.         int n_remain = remain - step;          //下次會剩下幾步
  10.         
  11.         *(list + idx) = step;                   //紀錄這次要走幾步
  12.         
  13.         if(n_remain == 0){                     //要走到終點了
  14.                 for(i=0 ; i <= idx ; i++){      //將紀錄的步數輸出
  15.                         printf("%d",list[i]);
  16.                 }
  17.                 printf("\n");
  18.         }else if(n_remain>0){
  19.                 idx++;                           //紀錄增加一次移動
  20.         
  21.                 walk(1,n_remain,list,idx);
  22.                 walk(2,n_remain,list,idx);
  23.         }else{                                    //n_remain為負,不合理的情況
  24.                 return;
  25.         }

  26. }

  27. int main(void){
  28.         int dis;
  29.         
  30.         printf("輸出總距離: ");
  31.         scanf("%d",&dis);
  32.         
  33.         int list[dis];
  34.         
  35.         walk(1,dis,list,0);
  36.         walk(2,dis,list,0);
  37. }
複製代碼


圖片附件: 1545044702138.jpg (2018-12-17 19:09, 51.9 KB) / 下載次數 710
http://smallcat.utmall.com/attachment.php?aid=476&k=6af3974b8576625d15a19b415a7e3081&t=1713556246&sid=ss5kbQ



圖片附件: 1545045105620.jpg (2018-12-17 19:12, 25.02 KB) / 下載次數 686
http://smallcat.utmall.com/attachment.php?aid=477&k=ad0715e96c99298a2d662018a50c31b4&t=1713556246&sid=ss5kbQ


作者: Smallcat    時間: 2018-12-17 19:15

1545044706770.jpg
  1. #include<stdio.h>
  2. int cover(int n){
  3.         if(n<=2){
  4.                 return 2;
  5.         }
  6.         return 2 * cover(n-2);
  7. }

  8. int main(void){
  9.         int n;
  10.        
  11.         printf("輸入n: ");
  12.         scanf("%d",&n);
  13.         printf("%d種可能",cover(n));
  14. }
複製代碼


圖片附件: 1545044706770.jpg (2018-12-17 19:15, 65.27 KB) / 下載次數 623
http://smallcat.utmall.com/attachment.php?aid=478&k=7a8d5c7cc8bcd7e920540d213fc3de90&t=1713556246&sid=ss5kbQ






歡迎光臨 小貓貓大聯盟!幻與想的境界\(0w0)/ (http://smallcat.utmall.com/) Powered by Discuz! 7.2