baby00qi 2016-03-06 13:50 采纳率: 50%
浏览 1693
已采纳

C语言 递归,好像跳不出递归循环了,求大神帮忙看看

啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。

int num_pi=0;
int num_yin=1;
int money = 823;

int fun(int mon);
int main()
{
    fun(0);
    return 0;
 } 
int fun(int mon)
 {
    if(mon > money)
        return 0;
    if(mon == money && num_pi<num_yin){
            printf("%d\n",num_pi);
            return 0;
     }
     num_pi++;
     fun(mon+23);
     num_yin++;
     fun(mon+19);
 }


  • 写回答

6条回答 默认 最新

  • threenewbee 2016-03-06 14:10
    关注
     void foo(int beer, int beverage)
    {
        if (beer < 0 || beverage < 0) return;
        if (beer * 23 + beverage * 19 == 823)
        {
            if (beer < beverage)
                printf("%d %d\n", beer, beverage);
        }
        if (beer * 23 + beverage * 19 < 823)
        {        
            foo(beer, beverage + 1);
        }
        else
        {
            foo(beer - 1, beverage);
        }
    }
    int main()
    {
        foo(823 / 23, 0);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料