【问题标题】:Mantain a count of subarrays that satisfy the condition usning recursion使用递归维护满足条件的子数组的计数
【发布时间】:2020-10-16 08:39:10
【问题描述】:

所以我做了一个递归函数,它给了我所有的子数组,我想对这些子数组应用一个条件,然后保留满足条件的子数组的计数。但是count变量的初始化一直困扰着我,请帮忙!

这是我的代码:

def printSubArrays(arr, start, end):
 if end == len(arr):
     return
 elif start > end:
     return printSubArrays(arr,0,end+1)

 else:
     dictio = arr[start:end + 1]
     print(dictio)
     if len(dictio)!=1:
         for i in range(len(dictio)):
             aand =1
             aand =aand & dictio[i]
         if aand %2 !=0:
             count=count+1
     return printSubArrays(arr,start+1,end)

arr=[1,2,5,11,15]
dictio=[]
count = 0
printSubArrays(arr,0,0)
print(count)

【问题讨论】:

  • 您的意思是您希望 printSubArrays() 初始化计数,但由于递归而无法初始化?
  • 是的,如果我在函数内部使用计数变量,则不能在主程序中使用它,计数变量是局部变量。

标签: variables recursion data-structures python-3.5 sub-array


【解决方案1】:

保持计数的最常用技术是使用辅助函数。所以你会让你的主要函数像这样调用一个助手:

def printSubArrays(arr, start, end):
   return _printSubArrays(arr, start, end, 0)

最后的0是个数。

然后每次递归时递增:

def _printSubArrays(arr, start, end, count):
 if end == len(arr):
     return count
 elif start > end:
     return _printSubArrays(arr,0,end+1, count + 1)

 else:
     dictio = arr[start:end + 1]
     print(dictio)
     if len(dictio)!=1:
         for i in range(len(dictio)):
             aand =1
             aand =aand & dictio[i]
         if aand %2 !=0:
             count=count+1
     return _printSubArrays(arr,start+1,end, count+1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多