0);残ったif文のfor文は使いましたが条件も変わっています。sum+coins[add-1]);の各呼び出しで与えている値の意味が変わっていないか。それらをどう利用しているか、を整理してみるといいでしょう。バージョンで考えてみるとかですかね。2015/12/22公開する程の物でもないですが、「(まだ公開しません)」と書いてしまっていたので公開します。ついでに最大枚数も引数で受け付けるようにしています。printf("両替の組み合わせは%d通りあります。0;}12/23ループを使わない場合の解き方も載せておきます。返りますね(無粋ですが気づいてしまったので一応)。普通に呼ばれる分には問題ない。検討するコインがもうないが残高がある。printf("両替の組み合わせは%d通りあります。(4)ありがとうございます。おかげでfor文の条件でのミスにも気づき、解決することができました。03:121修正案です。グローバル変数cntをやめて単純にcalcの戻り値を足したものを返却しています。配列要素数(硬貨の種類の数)はdefineせずsizeofで求めています。番兵は複雑になるので使うのをやめました。calc再帰呼び出しの引数が間違っていると(第2引数がiだと)結果が0になったりするので修正しています。printf("両替の組み合わせは%d通りあります。答えが合っているかどうか見るため、組み合わせ数だけでなく、内訳を表示するようにしてみました。2両替の組み合わせは20通りあります。(2)実行結果(デバッグメッセージ付き)を追記しました。17:02ウォッチこの質問への回答やコメントをメールでお知らせします。