带递归的Python时间表代码

2024-04-26 21:42:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须用递归函数做一个时间表代码。我必须要求用户输入一个数字,然后打印出从1到12的时间表。我必须使用递归函数,不允许使用for循环或{}循环,除了用户输入之外,所有变量都必须在函数内定义。我很难定义用户提供的数字需要乘以的数字。E、 X.2 X12 X22 X3。在

def times_tables(num):
    def multiply(x):
        product = x * num
    if x < 12:
        print (str(multiply(x + 1)))

user = input("Enter a number: ")
times_tables(user)

如果我在times_tables函数中定义x,那么每次函数运行时,它都会被设置回我第一次设置的值。谢谢你的帮助。在


Tags: 函数代码用户fortables定义def数字
3条回答

我不确定我是否理解你的任务,但我的尝试是:

def timetable(n, time=1):
    if time <= 12:
        print(n, time, n*time)
        timetable(n, time+1)
    else:
        return

timetable(int(input('Number: ')))
def times_tables(n, t=1):
    if t == 13:
        return
    print(str(n) + " x " + str(t) + " = " + str(n*t))
    times_tables(n, t+1)

times_tables(int(input("Enter number: ")))

Enter number: 3
3 x 1 = 3
3 x 2 = 6
3 x 3 = 9
3 x 4 = 12
3 x 5 = 15
3 x 6 = 18
3 x 7 = 21
3 x 8 = 24
3 x 9 = 27
3 x 10 = 30
3 x 11 = 33
3 x 12 = 36

你没有修改x,x是通过值传递的,这意味着它被复制了。在

如果你想把退出条件保持在递归之外,你需要一种直接从递归中写X的方法,这可能会涉及到一个全局(错误的做法所以要避免)。在

你需要在multiply中有退出条件,因为这是你的递归,在这种情况下,你的X会增加,你将检查正确的递增值。或者像ruggfrancesco建议的那样一起改变功能

相关问题 更多 >