python - 我的代码在到达 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))
解决方案
由于您正在使用,因此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)))
推荐阅读
- javascript - Graphvis - 水平而不是垂直层次结构?
- react-native - 重新打开应用程序时 React Native 不会重新渲染
- javascript - 刷新页面后如何防止数组中的相关项目返回?
- python - 如何在字典中保存输入框
- prolog - 具有重复元素的两个列表的交集
- vuejs2 - CK 编辑器工具栏中的 SourceEditing UI 按钮
- scikit-learn - 如何使用 sklearn 中的 cross_val_score 和 KFold 对平均绝对误差进行评分
- python - 如何使用 python 在 azure vnet 中创建新的容器组
- snowflake-cloud-data-platform - 为什么在尝试表实现时在 dbt 中出现“选择活动仓库”错误,但在视图实现时却没有?
- kubernetes - 我的 pod 始终处于“ContainerCreating”状态