Board logo

標題: [討論] [C語言] 迴圈題目 [打印本頁]

作者: 清華之光    時間: 2007-11-27 14:13     標題: [C語言] 迴圈題目

題目
用迴圈方法設置一funtion  anna(), 讓使用者輸入一個大於零的整數,
若為奇數 則 anna(n) = (3*n + 1)/2 + anna(n-1)
若為偶數 則 anna(n) = n/2 + anna(n-1)
若為零 則 anna(0) = 0

結果如下所示:

Enter a positive integer (q to quit).
Input :7
Output : 0 + 2 + 1 + 5 + 2 + 8 + 3 + 11 = 32
Input : -6
You should enter a positive integer!
Input :3
Output : 0 + 1 + 5 = 8
Input :q
Bye!
我的方法
  1. #include <stdio.h>
  2. int anna(int n);
  3. int main(void)
  4. {
  5.      int x;
  6.      printf("Enter a positive integer (q to quit).\n");
  7.      printf("Input : ");
  8.      while (scanf("%d", &x) == 1)
  9.      {
  10.           if (x > 0)
  11.           {
  12.                printf("Output : ");
  13.                printf("\b= %d\n", anna(x));
  14.                printf("Input : ");
  15.           }
  16.           else
  17.           {
  18.                printf("You should enter a positive integer!\n");
  19.                printf("Input : ");
  20.           }
  21.      }
  22.      printf("Bye!");
  23.      
  24.      return 0;
  25. }
  26. int anna(int n)
  27. {
  28.      int ans = 0;
  29.      
  30.      if (n%2 == 1)
  31.      {
  32.           ans = (3*n + 1)/2 + anna(n - 1);
  33.           printf(" %d +", (3*n + 1)/2);
  34.      }
  35.      if (n%2 == 0)
  36.      {
  37.           ans = n/2 + anna(n - 1);
  38.           printf(" %d +", n/2);
  39.      }
  40.      if (n == 0)
  41.      {
  42.           ans = 0;
  43.      }
  44.      
  45.      return ans;
  46. }
複製代碼





歡迎光臨 亞寶論壇 (http://bbs.ahpal.com/) Powered by Discuz! 7.0.0