我必须使用递归函数制作一次表代码。我必须向用户询问一个数字并打印出1到12的时间表。我必须使用递归函数,不允许使用for
循环或while
循环和所有变量此外,必须在功能内定义用户输入。我无法定义用户提供的号码需要乘以的号码。 E.X. 2 x 1 2 x 2 2 x 3 。
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)
如果我在x
函数中定义times_tables
,那么每次函数运行时,它都将被设置回我第一次设置的任何值。谢谢你的帮助。
答案 0 :(得分:0)
我不确定我是否理解你的任务,但这是我的尝试:
def timetable(n, time=1):
if time <= 12:
print(n, time, n*time)
timetable(n, time+1)
else:
return
timetable(int(input('Number: ')))
答案 1 :(得分:0)
你没有修改x,x是按值传递的,这意味着它被复制了。
如果你想让退出条件保持在递归之外,你需要一种直接从递归写入X的方法,这可能涉及全局(不良做法,所以避免)。
你需要将退出条件放在里面,因为这将是你的递归,在这种情况下你的X会增加,你将检查适当的增量值。或者像ruggfrancesco建议的那样一起更改功能
答案 2 :(得分:0)
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
答案 3 :(得分:0)
当我(图片)Google“时间表”时,我得到的结果与其他答案产生的结果截然不同。以下是我在二维维度中的递归解决方案:
def times_table(limit):
number_format = "{{:{}}}".format(len(str(limit ** 2)))
def times_table_recursive(number, increment):
minimum = max(increment, 1)
if number <= minimum * limit:
print(number_format.format(number if number > 0 else 'x'), end=' ')
times_table_recursive(number + minimum, increment)
elif increment < limit:
print()
increment += 1
print(number_format.format(increment), end=' ')
times_table_recursive(increment, increment)
else:
print()
times_table_recursive(0, 0)
times_table(12)
输出
> python3 test.py
x 1 2 3 4 5 6 7 8 9 10 11 12
1 1 2 3 4 5 6 7 8 9 10 11 12
2 2 4 6 8 10 12 14 16 18 20 22 24
3 3 6 9 12 15 18 21 24 27 30 33 36
4 4 8 12 16 20 24 28 32 36 40 44 48
5 5 10 15 20 25 30 35 40 45 50 55 60
6 6 12 18 24 30 36 42 48 54 60 66 72
7 7 14 21 28 35 42 49 56 63 70 77 84
8 8 16 24 32 40 48 56 64 72 80 88 96
9 9 18 27 36 45 54 63 72 81 90 99 108
10 10 20 30 40 50 60 70 80 90 100 110 120
11 11 22 33 44 55 66 77 88 99 110 121 132
12 12 24 36 48 60 72 84 96 108 120 132 144
>
在不扩展Python的递归深度限制的情况下,只能达到times_table(30)
。
答案 4 :(得分:-1)
def fun (no,i=1):
if i==10:
print (no*i)
else:
print (no*fun(i+1)
no=int (input ("Enter a no="))
fun (no)