喝汽水,1瓶汽水1元,2個空瓶可以換一瓶汽水, 給20元,可以多少汽水。
阿新 • • 發佈:2018-11-29
喝汽水,1瓶汽水1元,2個空瓶可以換一瓶汽水,
給20元,可以多少汽水。
第一種方法:(非遞迴)
#include<stdio.h> int main() { int total = 0; //瓶子數 int kps = 0; //錢數 int ys = 0; printf("請輸入錢數:"); scanf("%d", &total); kps = total; while (kps >= 1) { kps += ys; total += kps / 2; ys = kps % 2; kps /= 2; } printf("能換取 %d 瓶汽水\n", total); return 0; }
第二種方法:(遞迴)
#include <stdio.h> #include <stdlib.h> int buy_sode(int n) { static int flag = 0; if((n*2 + flag) < 2) { return 0; } if(0 == n%2) { return n + buy_sode(n/2); } else if((1 == n%2) && (0 == flag)) { flag = 1; return n + buy_sode(n/2); } else if((1 == n%2) && (1 == flag)) { flag = 0; return n + buy_sode(n/2 + 1); } return 0; } int main() { int money = 0; printf("請輸入錢數:"); scanf("%d", &money); printf("可以買 %d 瓶汽水\n", buy_sode(money)); return 0; }