c語言遞迴呼叫 買啤酒

2021-07-09 14:18:12 字數 1167 閱讀 2970

題目:兩元一瓶啤酒,兩個啤酒瓶可換一瓶啤酒,四個啤酒瓶蓋可換一瓶啤酒,求10元可以買幾瓶啤酒。

1、不允許借瓶子、瓶蓋:

#include//n個瓶,m個瓶蓋

int getcount(int n,int m)

int a = n / 2;

int b = n % 2;

int c = m / 4;

int d = m % 4;

return n-b + getcount(a+c+b,a+c+ d);

}void main()

執行結果:

剩餘瓶子1個,瓶蓋1個    2元  買 1瓶啤酒

剩餘瓶子1個,瓶蓋3個 4元 買 3瓶啤酒

剩餘瓶子1個,瓶蓋3個 6元 買 7瓶啤酒

剩餘瓶子1個,瓶蓋3個 8元 買11瓶啤酒

剩餘瓶子1個,瓶蓋3個 10元 買15瓶啤酒

請按任意鍵繼續. . .

2、允許借瓶子、瓶蓋,用完即還。

#include//n個瓶,m個瓶蓋

int getcount(int n,int m)

int a = n / 2;//2個瓶子換1瓶啤酒

int b = n % 2;//剩餘瓶子

int c = m / 4;//4個瓶蓋換1瓶啤酒

int d = m % 4;//剩餘瓶蓋

if(b==1)//剩1個瓶子時暫借1個瓶子,用後即還

if(d==3)//剩3個瓶蓋時暫借1個瓶蓋,用後即還

if(d==2)//剩2個瓶蓋,暫借2個瓶蓋、1個瓶子,用後即還

return n-b + getcount(a+c+b,a+c+ d);

}void main()

執行結果:

剩餘瓶子0個,瓶蓋0個    2元  買 4瓶啤酒

剩餘瓶子0個,瓶蓋0個 4元 買 8瓶啤酒

剩餘瓶子0個,瓶蓋0個 6元 買12瓶啤酒

剩餘瓶子0個,瓶蓋0個 8元 買16瓶啤酒

剩餘瓶子0個,瓶蓋0個 10元 買20瓶啤酒

請按任意鍵繼續. . .

c語言呼叫cpp函式 C語言 函式的遞迴呼叫

乙個函式在呼叫的過程 現直接或者間接呼叫該函式本身的情況,稱為遞迴呼叫,這種函式稱為遞迴函式 在寫遞迴函式時,需要解決如下兩個問題 1 遞迴的出口條件 2 遞迴公式 遞迴函式的 一般為 if 遞迴出口條件 返回符合出口條件的函式值或輸出結果 else 遞迴公式 雖然演算法一致,但n不同,y不同,在記...

c語言 DFS演算法 遞迴呼叫

深度優先搜尋屬於圖演算法的一種,英文縮寫為dfs即depth first search.其過程簡要來說是對每乙個可能的分支路徑深入到不能再深入為止,而且每個 節點只能訪問一次 深度優先演算法dfs 模型 以二維直角座標來舉例 void dfs int dep dep表示深度 方向向量,x,y 周圍的...

C語言 函式的遞迴呼叫

1 可以把要解決的問題轉化為乙個規模較小的新問題,而這個新問題的解決方法仍與原來的解決方法相同。2 必定要有乙個明確的結束遞迴的條件。總而言之,可歸納為 遞迴呼叫過程 兩個階段 遞推階段 將問題不斷地分解為新的子問題,逐漸從未知的向已知的方向推測,最終達到已知的條件,即遞迴結束條件,這時遞推階段結束...