關於買桃問題的一點想法
初學C#,這幾天初步了解了下循環問題,遇到了買桃問題這個案例:“桃子3元一個,3個桃核可以換一個桃子,擁有100元,最多可以吃多少個桃子?”;
這樣一個數學問題,想要用代碼來實現,首先分析這個問題的思路:
目的是吃最多,100元全部用來買桃子,然後吃光,再用桃核換取桃子,再吃,把新吃的桃核和沒用完的桃核相加,再去換取桃子,直到桃核的數量小小於3,此時,剩余的錢和桃核都不足以換取桃子,說明已經吃了最大數量的桃子了;這裏面的重復的動作是:
1、換取桃子;2、計算剩余桃核;3、吃掉桃子;4、計算當前所擁有的桃核。重復的條件就是:用的桃核數量,足夠換取桃子,一直到所計算的剩余桃核數量小於3為止。
以下是用代碼來實現:
int money = 100, price = 3, exchange = 3; //定義好錢,桃子單價和換桃的桃核數量;
int eated, kernel;
eated = money / price; //吃到的桃子為最先100元錢能買到的桃子數量
kernel = eated;
while(kernel>=exchange)
{
//換取桃子
int peach = kernel / exchange;
//計算剩余桃核
int left = kernel % exchange;
//吃掉桃子
eated = eated + peach;
//計算當前擁有的桃核
kernel = left + peach;
}
Console.Write("最多可以吃到"+eated +"個桃子");
Console.ReadLine();
代碼不多,這個問題難在於分析過程,所需要考慮到的各種情況,以及清楚其中的循環條件和循環體,比較而言,分析過程比結果難得多,今後遇到此類問題,還需分析梳理出此間各種條件之間的關系。
關於買桃問題的一點想法