如何让递归函数在重复执行指定次数后终止?已尝试计数器无效
让递归函数执行2次后终止的解决方案
你之前用计数器没效果的核心原因是:每次调用递归函数时,都会重新创建一个局部的counter变量,各个递归层级的counter互不关联,根本无法累计递归次数。
要实现递归执行2次后终止,你需要把递归深度作为参数传递,让这个值在递归调用间共享。具体修改方案如下:
修改后的代码
# 提前定义dividers字典,避免未定义报错 dividers = {} def recursive_divder_prime_number(numbers, depth=0): # 递归深度达到2时,直接终止后续递归 if depth >= 2: return for num in numbers: print(num,'we are talking about') if num == 1: dividers[num] = 1 elif num > 1: print('Hi') a = [i for i in range(2, num) if num % i == 0] print(a) if len(a) == 0: print(num, ' is a prime number') # 递归调用时,将深度+1传递进去 recursive_divder_prime_number(a, depth + 1) recursive_divder_prime_number([8,1000,669,1])
关键说明
- 新增
depth参数,默认值为0,用来记录当前递归的层级。 - 每次递归调用时,将
depth + 1传递给下一层,确保每一层的深度都会递增。 - 当
depth >= 2时,函数直接return,不再执行后续的递归逻辑,从而实现执行2次后终止的需求。
内容的提问来源于stack exchange,提问作者aszx 6309
相关产品推荐
相关产品推荐

