递归第二次不起作用。 - python

recursion isn't working 2nd time. - python

def twothousand(amt):
    n=500
    div1=amt//n
    mod1=amt%n
    return (mod1,n,div1)


def fivehundred(amt):
    n=200
    div1=amt//n
    mod1=amt%n
    return (mod1,n,div1)


def calculate(amt):
    if amt <10:
        print("hi")

    elif amt>=200 and amt<500:
        mod1,n,div1=fivehundred(amt)
        return (mod1,n,div1)

        #the above return statement isn't returning anything. 
        #That is, now the program doesn't go to the main function 2nd time.

    elif amt>=500 and amt<2000:
        mod1,n,div1=twothousand(amt)
        return (mod1,n,div1)


def main1():
    amt=int(input("Enter the amount: "))
    mod1,n,div1=calculate(amt)
    print (mod1,n,div1)
    #The above print function executes only once.
    if mod1!=0:
        amt=mod1
        calculate(amt)


if __name__=="__main__":
    main1()

输出:

Enter the amount: 1700
200 500 3

预期输出:

Enter the amount: 1700
200 500 3
0 200 1

我无法在第二次调用 calculate() 函数后执行 return 语句,如注释中所写。 我没有得到第二个输出。 python 的新手,请帮助。

抱歉没有早点更新逻辑。 逻辑是:

当用户要求金额为 1700 时,他只能使用 500 和 200 货币获得该金额。所以,第一个输出是 - 200 500 3 ;即 3 个 500 货币.. 剩下的是 200。 我想调用函数计算直到值 mod1 == 0。

您的 main() 函数应如下所示:

def main1():
    amt=int(input("Enter the amount: "))
    mod1,n,div1=calculate(amt)
    print (mod1,n,div1)
    #The above print function executes only once.
    if mod1!=0:
        amt=mod1
        mod1,n,div1 = calculate(amt)
        print (mod1,n,div1)