另一个递归在Python中返回“无”(多个参数)

时间:2018-06-14 09:15:17

标签: python function recursion

我读了一些关于这个主题的内容,发现我必须返回Function而不是一个值...但是我不想让它在这个特定情况下工作:

'''Recursive Solution'''
def find_even_index(arr, index=0):


    #break condition if non found
    if len(arr) == index:
        return -1

    #init sum vars
    sum_up = 0
    sum_down = 0

    #calculate up
    for x in range(0, index):
        sum_up += arr[x]

    print(sum_up)

    #caculate down
    for x in range(index + 1, len(arr)):
        sum_down += arr[x]

    print(sum_down)

    #break condition if found
    if sum_up == sum_down:
        print('return: ', index)
        return index

    index = index + 1

    find_even_index(arr, index)

以下是测试案例:

Test.assert_equals(find_even_index([1,2,3,4,3,2,1]),3)
Test.assert_equals(find_even_index([1,100,50,-51,1,1]),1,)
Test.assert_equals(find_even_index([1,2,3,4,5,6]),-1)
Test.assert_equals(find_even_index([20,10,30,10,10,15,35]),3)
Test.assert_equals(find_even_index([20,10,-80,10,10,15,35]),0)
Test.assert_equals(find_even_index([10,-80,10,10,15,35,20]),6)
Test.assert_equals(find_even_index(range(1,100)),-1)
Test.assert_equals(find_even_index([0,0,0,0,0]),0,"Should pick the first 
index if more cases are valid")
Test.assert_equals(find_even_index([-1,-2,-3,-4,-3,-2,-1]),3)
Test.assert_equals(find_even_index(range(-100,-1))

这是最初的任务:

  

您将获得一个整数数组。你的工作就是拿走   那个数组并找到一个索引N,其中整数的总和为   N的左边等于N右边的整数之和。如果   没有索引可以实现这一点,返回-1。

编辑:(解决方案)

好的,所以我明白了。我阅读了关于这个主题的其他不同问题并得出结论,我应该以相反的方式完成它,即在不成功的情况下返回函数。

所以我必须将returnvalue放在函数的末尾,并且只是在不成功的情况下递归调用函数:

'''Recursive Solution'''
def find_even_index(arr, index=0):

    #break condition if non found
    if len(arr) == index:
        return -1

    #init sum vars
    sum_up = 0
    sum_down = 0

    #calculate up
    for x in range(0, index):
        sum_up += arr[x]

    #caculate down
    for x in range(index + 1, len(arr)):
        sum_down += arr[x]

    #break condition if found
    if sum_up != sum_down:
        index = index + 1
        return find_even_index(arr, index)

    return index 

0 个答案:

没有答案