早上好,Python专家,
有人知道如何使用递归来指定将函数输出作为特定次数循环回其新输入,然后再输出最终返回值吗?
编辑:对不起,以下更多信息: -IronPython -使用Autodesk Revit -代码摘录
import clr
clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *
def Lmidpoint(line1):
midpoint=Line.PointAtParameter(line1,0.5)
return midpoint
outlist=[]
pointlist=[]
lines=IN[0]
count=len(lines)
if count > 0:
for l in lines:
mp=Lmidpoint(l)
count-1
firstline=Line.ByStartPointEndPoint(l.StartPoint,mp)
secondline=Line.ByStartPointEndPoint(mp,l.EndPoint)
outlist.append({firstline,secondline})
pointlist.append(mp)
else:
outlist.append('Well that didnt work...')
count-1
OUT = pointlist,outlist
答案 0 :(得分:1)
只需将输出存储在变量中,然后将该变量再次传递给函数。循环执行此操作以根据需要重复多次:
output = f(input)
for _ in range(n_repeats):
output = f(output)
答案 1 :(得分:0)
您总是可以迭代地解决此问题,但是如果您正在寻找一种递归方法,则可以将基本情况保持在运行所需的“次数”左右。
如果您试图自己找出问题,并且只是想了解该过程的外观,则表示荣誉。保持它。
input = 5
def recursive_f (input, n): #n being the number of times you want to run this
if n == 0:
return input
output = input + 1 #some operation to get output.
return recursive_f (output, n - 1)
recursive_f(input, 3) #outputs 8
答案 2 :(得分:0)
由于您的问题尚不清楚,因此我仅举了一个简单的递归函数示例:
def your_func(a, init, end):
a += 1
init += 1
if (init < end):
a = your_func(a, init, end)
return a
print (your_func(2, 0, 7)) #output with these numbers will be 2 + 7 (9)
此函数将其第一个参数增加1次 X 次,其中 X =最后一个参数-中间参数。
好的部分是:如果愿意,可以使用类似的结构在 a 变量上执行 end-init 次的其他任何事情。由于您已经了解了更多有关Python递归的知识,因此我强烈建议您稍微发挥点创意,然后尝试更改 your_func 来执行不同的任务。
答案 3 :(得分:-1)
是一个while循环,您在项目中寻找什么?也许吗?
k = 0
n = #number of repeats
input = #your input
def yourDef():
#codehere
return input
while k < n:
yourDef()