【发布时间】:2016-10-13 06:34:45
【问题描述】:
考虑问题:给定一个整数数组,返回数组递减的次数。所以 [3,2,1] 减少了两次(在 3 和 2 处); [1,2,3,4,5,4,3,2,1] 减少了 4 倍(在 5、4、3、2 处),而 [1] 没有减少。
用任何语言在 for 循环中解决这个问题都非常容易:
int result = 0;
for (int i = 0; i < array.length - 1; i++) {
if (array[i] > array[i+1]) result += 1;
}
我只知道如何使用 for 或 while 循环并跟踪索引来解决这个问题。我不知道使用map 之类的方法或使用列表或推导式的任何功能方式,但我希望这就是存在的。
【问题讨论】:
-
“不使用 for 或 while 循环,或跟踪索引,或使用功能工具箱方法,如 map 或过滤器或理解。” - 我不知道你在找什么。没有其他东西了。
-
@KarolyHorvath 对不起,我的语法模棱两可。已经澄清了。
-
我也在寻找如何做到这一点。使递归函数有效,但是现在,在函数式编程中迭代循环时如何模拟“继续”和“中断”?
标签: python arrays functional-programming language-agnostic