- UID
- 789
- 帖子
- 13
- 精華
- 7
- 積分
- 538
- 金幣
- 513
- 威望
- 17
- 推廣
- 0
- 閱讀權限
- 10
- 在線時間
- 14 小時
- 註冊時間
- 2007-10-21
|
1樓
發表於 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! 我的方法- #include <stdio.h>
- int anna(int n);
- int main(void)
- {
- int x;
- printf("Enter a positive integer (q to quit).\n");
- printf("Input : ");
- while (scanf("%d", &x) == 1)
- {
- if (x > 0)
- {
- printf("Output : ");
- printf("\b= %d\n", anna(x));
- printf("Input : ");
- }
- else
- {
- printf("You should enter a positive integer!\n");
- printf("Input : ");
- }
- }
- printf("Bye!");
-
- return 0;
- }
- int anna(int n)
- {
- int ans = 0;
-
- if (n%2 == 1)
- {
- ans = (3*n + 1)/2 + anna(n - 1);
- printf(" %d +", (3*n + 1)/2);
- }
- if (n%2 == 0)
- {
- ans = n/2 + anna(n - 1);
- printf(" %d +", n/2);
- }
- if (n == 0)
- {
- ans = 0;
- }
-
- return ans;
- }
複製代碼
|
|