Python 如何用循环解这个方程?
这是顺序:Python 如何用循环解这个方程?,python,Python,这是顺序: 1, 2, 3, -1, 7, -10, 3, -73, … 实际上是这样的: t(n) = (t(n-3) * t(n-2)) - t(n-1) 例如:-10=(3*-1)-7 我使用了这个代码,但它不像我提供的这个等式 n1 = 1 n2 = 2 n3 = 3 m = eval(input("number: ")) if m < 4: if m == n1: print(n1) elif m == n2:
1, 2, 3, -1, 7, -10, 3, -73, …
实际上是这样的:
t(n) = (t(n-3) * t(n-2)) - t(n-1)
例如:-10=(3*-1)-7
我使用了这个代码,但它不像我提供的这个等式
n1 = 1
n2 = 2
n3 = 3
m = eval(input("number: "))
if m < 4:
if m == n1:
print(n1)
elif m == n2:
print(n2)
elif m == n3:
print(n3)
elif m >= 4:
n4 = (n1 * n2 - n3)
print(n4)
n1=1
n2=2
n3=3
m=评估(输入(“编号”))
如果m<4:
如果m==n1:
打印(n1)
elif m==n2:
打印(n2)
elif m==n3:
打印(n3)
elif m>=4:
n4=(n1*n2-n3)
打印(n4)
这是我找到t(m)
这是我找到
t(m)
这可以使用递归方法处理,如下所示:
m=eval(输入(“数字”))
def递归_函数(n):
如果1可以使用递归方法处理,如下所示:
m=eval(输入(“数字”))
def递归_函数(n):
如果1这就是你可以做到的。这类似于斐波那契序列
n1 = 1
n2 = 2
n3 = 3
m = int(input("number: "))
if m < 4:
if m == n1:
print(n1)
elif m == n2:
print(n2)
elif m == n3:
print(n3)
else:
for i in range(3, m):
temp1, temp2 = n2, n3
n3 = n1 * n2 - n3
n1, n2 = temp1, temp2
print(n3)
n1=1
n2=2
n3=3
m=int(输入(“数字:”)
如果m<4:
如果m==n1:
打印(n1)
elif m==n2:
打印(n2)
elif m==n3:
打印(n3)
其他:
对于范围(3,m)内的i:
temp1,temp2=n2,n3
n3=n1*n2-n3
n1,n2=temp1,temp2
打印(n3)
这就是你可以做到的。这类似于斐波那契序列
n1 = 1
n2 = 2
n3 = 3
m = int(input("number: "))
if m < 4:
if m == n1:
print(n1)
elif m == n2:
print(n2)
elif m == n3:
print(n3)
else:
for i in range(3, m):
temp1, temp2 = n2, n3
n3 = n1 * n2 - n3
n1, n2 = temp1, temp2
print(n3)
n1=1
n2=2
n3=3
m=int(输入(“数字:”)
如果m<4:
如果m==n1:
打印(n1)
elif m==n2:
打印(n2)
elif m==n3:
打印(n3)
其他:
对于范围(3,m)内的i:
temp1,temp2=n2,n3
n3=n1*n2-n3
n1,n2=temp1,temp2
打印(n3)
序列=[1,2,3]
def find_值(n):
如果n<4:
返回序列[n-1]
其他:
计数=3
而计数<代码>序列=[1,2,3]
def find_值(n):
如果n<4:
返回序列[n-1]
其他:
计数=3
而计数AO(n)
时空解:
def t(n):
arr=[1,2,3]
如果n<3:返回arr[n]
对于范围(n-3)内的i:
#用给定的方程式计算下一个数字,
#并将结果推送到临时数组中
arr.append(arr[-3]*arr[-2]-arr[-1])
打印(arr)#显示arr内容,可以删除此行
#返回数组的最后一项,即结果
返回arr[-1]
印刷品(t(10))
我们在这里不需要递归,它在空间和时间成本方面都会更有效。AO(n)
时间和空间解决方案:
def t(n):
arr=[1,2,3]
如果n<3:返回arr[n]
对于范围(n-3)内的i:
#用给定的方程式计算下一个数字,
#并将结果推送到临时数组中
arr.append(arr[-3]*arr[-2]-arr[-1])
打印(arr)#显示arr内容,可以删除此行
#返回数组的最后一项,即结果
返回arr[-1]
印刷品(t(10))
我们在这里不需要递归,它在空间和时间成本方面都会更有效。为什么不使用您所知道的提供的方程?请您对方程进行更多解释。n是什么?当你在变量名中使用数字序列时,列表应该是更好的数据容器。我想再次强调,eval
永远不应该用于输入数字!一个糟糕的演员也可以用这个来轰炸你的电脑。为什么不使用你所知道的公式呢?你能解释一下这个公式吗。n是什么?当你在变量名中使用数字序列时,列表应该是更好的数据容器。我想再次强调,eval
永远不应该用于输入数字!一个不好的演员也可以用它来攻击你的电脑。由于递归的限制,这只适用于m<1000
。同样的问题是一个循环。由于递归限制,这个循环只适用于m<1000
。同样的问题是一个循环。由于递归限制,这个循环只适用于m<1000
。同样的问题是循环。在这种情况下,可以使用列表来存储序列的值,直到填充了所需数量的元素。不需要递归。代码已更新以避免递归,并且内存效率高。更好的方法是::-)由于递归限制,此woll仅适用于m<1000
。同样的问题是循环。在这种情况下,可以使用列表来存储序列的值,直到填充了所需数量的元素。不需要递归。代码已更新以避免递归,并且内存效率高。更好的方法是::-)列表会比临时变量更好,可读性更好。但是很好,它是O(n)
而不是O(3^n)
@wuerfelfreak:一个列表也会浪费大量额外的内存。这一点很好。我同意。一个列表会比临时变量更好,可读性更好。但是很好,它是O(n)
而不是O(3^n)
@wuerfelfreak:一个列表也会浪费大量额外的内存。这一点很好。我同意。谢谢,伙计,你刚刚解决了我的问题。非常感谢你!!!谢谢,伙计,你刚刚解决了我的问题。非常感谢你!!!
n1 = 1
n2 = 2
n3 = 3
m = int(input("number: "))
if m < 4:
if m == n1:
print(n1)
elif m == n2:
print(n2)
elif m == n3:
print(n3)
else:
for i in range(3, m):
temp1, temp2 = n2, n3
n3 = n1 * n2 - n3
n1, n2 = temp1, temp2
print(n3)
sequence=[1,2,3]
def find_value(n):
if n < 4:
return sequence[n-1]
else:
count=3
while count<n:
sequence.append(sequence[0]*sequence[1]-sequence[2])
sequence.pop(0)
count=count+1
return sequence[-1]
if __name__=="__main__":
n=int(input("Enter digit"))
print(find_value(n))