我的参数n
是一个整数的电话号码.
使用递归我想返回整数中的前三个数字.
我把整数变成了一个单独的数字字符列表,我试图一遍又一遍地删除最后一个数字,直到我离开最后三个,但我仍然坚持如何重复它.
def areaCodes(n):
n = str(n)
n = list(n)
del n[-1]
#n = reduce(opperator.add, n)
n = ''.join(n)
n = int(n)
return n
Run Code Online (Sandbox Code Playgroud)
我知道我应该以某种方式在回报中重复这个名字,但因为n
不是我可以用来重复的整数.我该怎么办?
我的印象是,要找到嵌套的for循环的大O,则将每个forloop的大O与下一个for循环相乘。大O是否适合:
for i in range(n):
for j in range(5):
print(i*j)
Run Code Online (Sandbox Code Playgroud)
是O(5n)吗?如果是的话,大O将:
for i in range(12345):
for j in range(i**i**i)
for y in range (j*i):
print(i,j,y)
Run Code Online (Sandbox Code Playgroud)
是O(12345*(i**i**i)*(j*i)
?还是O(n^3)
因为嵌套了3次?我很混乱
我应该编写一个函数来查找给定数量的狗需要的鞋子数量。它可以很容易地用乘法来完成,但我们需要使用递归,所以我有
def dogShoes(n):
total = 0
if n>0:
shoes = n + dogShoes(n)
total = total + 1
if total == 4:
return shoes
Run Code Online (Sandbox Code Playgroud)
但我现在意识到第 4 行将走向无穷大,而我认为会阻止它的底部甚至不会实现。有没有办法说 when total
is 4
,停止并返回答案而不shoes
走向无穷大?