Если вы хотите прекратить итерации после достижения определенной глубины итерации, вам нужно будет передать счетчик в функцию. Это можно сделать с помощью аргумента default
в функции:
def calc_value(original_value, count = 0):
# equations to calculate new_value
if original_value - new_value < tolerance:
return new_value
else:
if count > 100:
return new_value # Handle reaching limit
calc_value(new_value, count + 1)
Каждый раз, когда вы вызываете функцию рекурсивно, добавьте 1 к счетчику и проверьте, достигнут ли предел.
Используя аргумент default
, вам не нужно задавать его при вызове функции:
calc_value(42)
Вы можете даже пойти дальше и добавить аргумент limit, чтобы указать предел итерации:
def calc_value(original_value, count = 0, limit = 100):
# ...
if count > limit:
return new_value
calc_value(new_value, count, limit)
Затем вы можете определить аргументы либо по порядку, либо указав аргумент:
# Default values: count = 0, limit = 100
calc_value(42)
# Will set count to default 0, and limit to 150
calc_value(42, limit=150)
# Will set count to 5, and limit to 200
calc_value(42, 5, 200)
# Will set count to 5, and limit to 150
calc_value(42, limit=150, count=5)