首页 > 解决方案 > 我的代码在到达 else 和 return 语句时继续运行,我在 if 语句中有递归?答案是 589.45

问题描述

def max_increase(seq):
    if len(seq) == 0 :
        return 0
    elif type(seq) != list:
        max_increase(list(seq))
    elif seq.index(max(seq)) < seq.index(min(seq)):    
        max_increase(seq[seq.index(min(seq)):])
    else: 
        return max(seq) - min(seq)
            
            
            
btc_data = [ 6729.44, 6690.88, 6526.36, 6359.98, 6475.89, 6258.74,
                 6485.10, 6396.64, 6579.00, 6313.51, 6270.20, 6195.01,
                 6253.67, 6313.90, 6233.10, 6139.99, 6546.45, 6282.50,
                 6718.22, 6941.20, 7030.01, 7017.61, 7414.08, 7533.92,
                 7603.99, 7725.43, 8170.01, 8216.74, 8235.70, 8188.00,
                 7939.00, 8174.06 ]
btc_data.reverse()


max_increase(tuple(btc_data))

标签: python

解决方案


由于您正在使用,因此recursion您需要使用return带有功能调用和退出条件的语句。在您的代码中,您没有使用return函数调用,这就是它继续运行的原因。

def max_increase(seq):
    if len(seq) == 0 :
        return 0
    elif type(seq) != list:
        return max_increase(list(seq))
    elif seq.index(max(seq)) < seq.index(min(seq)):    
        return max_increase(seq[seq.index(min(seq)):])
    else: 
        return max(seq) - min(seq)
            
            
            
btc_data = [ 6729.44, 6690.88, 6526.36, 6359.98, 6475.89, 6258.74,
                 6485.10, 6396.64, 6579.00, 6313.51, 6270.20, 6195.01,
                 6253.67, 6313.90, 6233.10, 6139.99, 6546.45, 6282.50,
                 6718.22, 6941.20, 7030.01, 7017.61, 7414.08, 7533.92,
                 7603.99, 7725.43, 8170.01, 8216.74, 8235.70, 8188.00,
                 7939.00, 8174.06 ]
btc_data.reverse()


print(max_increase(tuple(btc_data)))

推荐阅读