落實遞歸解決問題:發現硬幣的所有可能的組合,用遞歸
使用三種類型的硬幣包括:1億元; 2元和5元,加10元,有多少組合?
以下是我的代碼:
int coinNum(int num){
if(num>=0){
if(num==0)
return 1;
else
return coinNum(num-5)+coinNum(num-2)+coinNum(num-1);
}else
return 0;
}
int main(){
int num=coinNum(10);
printf("%d\n",num);//the result is 128
system("pause");
return 0;
}
什麼是我的遞歸算法的錯誤或者什麼是你的正確的代碼? (5,2,2,1)和(2,5,2,1)應計爲1 組合。
2.以下是我的枚舉算法的代碼。
void coin(){
int i,j,k,count=0;
for(i=0;i<=10;i++)
for(j=0;j<=5;j++)
for(k=0;k<=2;k++)
if((i+2*j+5*k)==10){
count++;
printf("one yuan :%d,2 yuan :%d,5 yuan :%d\n",i,j,k);
}
printf("總方法數%d\n",count);//the result is 10
}
是什麼讓你覺得有錯誤? –
你問我們什麼是錯誤?你應該告訴我們錯誤是什麼。 – bolov
您要求組合,這意味着(2,2,5,1)或(2,5,2,1)應該計爲1個組合嗎?在你的代碼中,你無法處理這種情況,那是你的邏輯錯誤。 –