返回列表 回復 發帖

[討論] [C語言] 迴圈題目

[討論] [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. }
複製代碼
返回列表