【发布时间】:2020-06-03 02:35:26
【问题描述】:
我正在编写一个以整数作为输入的递归函数,它将返回 123 在整数中出现的次数。
例如:
打印(一二三(123123999123))
将打印出 3,因为序列 123 在我输入函数的数字中出现了 3 次。
到目前为止,这是我的代码:
def onetwothree(x):
count = 0
while(x > 0):
x = x//10
count = count + 1
if (count < 3): #here i check if the digits is less than 3, it can't have the sequence 123 if it doesn't have 3 digits
return 0
if (x%10==1 and x//10%10 == 2 and x//10//10%10==3):
counter += 1
else:
return(onetwothree(x//10))
这会一直打印“0”。
【问题讨论】:
-
它一直打印
0,因为你的while循环将x设置为0,然后调用onetwothree(0),当然是0。 -
@MarkSnyder 所以我删除了该部分,然后它说超出了最大输出递归。
-
您的代码没有多大意义。使用铅笔和纸(或 IDE 的调试器)逐行查看它的实际作用。
-
你明白
x = x//10实际上改变了x的值吗? -
@PM77-1 它检查第一个数字是否为 1,然后第二个数字为 2,然后第二个数字为 3,如果它向计数器添加一个,则通过该函数将新数字放回。跨度>
标签: python function if-statement recursion methods