注册 登录
编程论坛 Python论坛

有个数学题不知道如何写程序,请大神提示一下

djr78 发布于 2019-12-20 07:45, 1160 次点击
糖果店搞活动,3颗糖纸能换1颗糖,现在买了15颗糖,最后能吃多少可糖? 如果是买了N颗糖,最后能吃多少颗,程序不知怎样写,有人指点一下吗?
1 回复
#2
fall_bernana2019-12-20 09:36
以下是引用djr78在2019-12-20 07:45:42的发言:
 
糖果店搞活动,3颗糖纸能换1颗糖,现在买了15颗糖,最后能吃多少可糖? 如果是买了N颗糖,最后能吃多少颗,程序不知怎样写,有人指点一下吗?

 
这就是一个递归
程序代码:

def f(n,d=0):
    if (n+d)/3>=1:
        print("糖果数为:%2d;现有的糖纸:%2d;##进入下个循环##:用这些糖果纸兑换的糖果:%d;兑换糖果后剩余的糖果纸值:%d;" % (n,n+d,int((n+d)/3),(n+d)%3))
        return n+f(int((n+d)/3),(n+d)%3)
      
    else:
        print("糖果数为:%2d,现有的糖纸:%2d;对应的糖纸不能兑换糖了.循环结束." % (n,d))
        return n


print("获得的总糖果数:%d" %(f(114)))

糖果数为:114;现有的糖纸:114;##进入下个循环##:用这些糖果纸兑换的糖果:38;兑换糖果后剩余的糖果纸值:0;
糖果数为:38;现有的糖纸:38;##进入下个循环##:用这些糖果纸兑换的糖果:12;兑换糖果后剩余的糖果纸值:2;
糖果数为:12;现有的糖纸:14;##进入下个循环##:用这些糖果纸兑换的糖果:4;兑换糖果后剩余的糖果纸值:2;
糖果数为: 4;现有的糖纸: 6;##进入下个循环##:用这些糖果纸兑换的糖果:2;兑换糖果后剩余的糖果纸值:0;
糖果数为: 2,现有的糖纸: 0;对应的糖纸不能兑换糖了.循环结束.
获得的总糖果数:170

1