我不知道这是否完全与recusion相关,但我在main函数中添加了一个小函数来阻止非整数输入
def main(depth, size):
depth = eval(input("Enter depth that is an integer: "))
if (isinstance( depth, int)) == False:
print( 'Not an integer' )
main(depth, size)
else:
pass
turtle.left(120)
turtle.speed(100)
triangle(depth, size)
def triangle(depth, size):
if depth == 0:
pass
else:
turtle.forward(size)
triangle(depth-1, size/2)
turtle.right(120)
turtle.forward(size)
turtle.left(120)
triangle(depth-1, size/2)
turtle.right(120)
turtle.right(120)
turtle.forward(size)
turtle.right(120)
main(depth, 100)
当我输入一个整数时,程序运行正常,当我输入一个非int时,它返回并告诉我它不是一个整数并返回到输入阶段。然后,当我输入一个整数时,它开始绘制图片,然后再进一步,在第27行的一个递归中挂起“三角形(深度-1,大小/ 2)”。
我已经接近完成这个程序,我只需要让它更难崩溃。
答案 0 :(得分:1)
用户输入不是(非尾部)递归的良好候选者,因为深度是无限的。只是迭代地做:
def main(size):
while True:
depth = input("Enter depth that is an integer: ")
try:
depth = int(depth)
except ValueError:
print('Not an integer')
else:
break
turtle.left(120)
turtle.speed(100)
triangle(depth, size)