【问题标题】:Print the indices of a given element in an array using recursion?使用递归打印数组中给定元素的索引?
【发布时间】:2020-12-21 06:36:17
【问题描述】:

我正在尝试编写代码以返回数组中给定元素的所有索引的数组

arr = [15,11,40,4,4,9]
x = 4
# fsf means count of element 'found so far'
def all_index(arr, i , x, fsf):
    if i == len(arr):
        result = [0] * fsf 
    
    elif arr[i] == x:
        indices = all_index(arr, i + 1, x, fsf + 1)
        indices[fsf] = i
        return indices
        
    else:
        indices = all_index(arr, i + 1, x, fsf)
        return indices
        
        
print(all_index(arr, 0, x, 0))

这个问题在这里已经有了答案: Python中没有返回的递归函数[重复](2个答案)

您的帖子与类似问题相关联。如果此问题不能解决您的问题,请提出新问题。

3 小时前关闭。

(为您提供私人反馈) 编辑问题

我正在尝试编写代码以返回数组中给定元素的所有索引的数组。 fsf 表示“到目前为止找到的元素”的计数

arr = [15,11,40,4,4,9]
x = 4

def all_index(arr, i , x, fsf):
    if i == len(arr):
        result = [0] * fsf 
    
    elif arr[i] == x:
        indices = all_index(arr, i + 1, x, fsf + 1)
        indices[fsf] = i
        return indices
        
    else:
        indices = all_index(arr, i + 1, x, fsf)
        return indices
        
        
print(all_index(arr, 0, x, 0))

预期输出:[3,4]

据我了解,索引数组是 [0,0] 但后来它必须更改为 [3,4]

虽然代码很容易使用迭代,但我正在尝试学习递归。

【问题讨论】:

  • 简单的答案是你过于复杂的东西,你没有在你的方法中循环数组

标签: python arrays list recursion indices


【解决方案1】:

您可以在每次递归时简单地append 索引到数组中,其中值与数组的当前元素匹配:

ans = []
def all_index(arr, i, x):
    if i is len(arr): return;
    if x is arr[i]:
        ans.append(i)
    all_index(arr, i+1, x)


all_index(arr, 0, x)
print(ans)

【讨论】:

  • 这是正确的答案,因为 Python 中的数组没有固定长度。例如,如果它是在 Java 中,则此方法仅适用于列表而不适用于数组。
  • 是的,这适用于列表。如果,我将 ans 创建为大小等于给定数组长度的列表,其中 None 作为元素,即 ans = [None] * len(arr)。那么,有什么办法可以用索引更改 ans 中的元素,即 [3, 4, None, None, ....] 然后,我所要做的就是打印不是 None 的元素。
  • 何必存储 None
  • 给人一种代码在其他语言中也适用于数组的印象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 2013-06-21
  • 1970-01-01
相关资源
最近更新 更多