私はScalaを初めて使用し、末尾再帰について学び始めました。関数型プログラミングの末尾再帰は、命令型プログラミングの反復 (for ループ) のカウンター部分であることを学びました。
リスト要素を合計する単純な C++ ループ:
uint32_t sum = 0;
for (size_t i = 0; i < list.length(); ++i) {
sum += list[i];
}
Scala の再帰的等価物:
def listSum(list: List[Int]): Int = {
def listSumHelper(list: List[Int], sum: Int): Int = {
if (list.isEmpty) sum
else listSumHelper(list.tail, sum + list.head)
}
listSumHelper(list, 0)
}
質問: ネストされた for ループに相当するスカラ再帰は何ですか?
uint32_t sum = 0;
for (size_t i = 0; i < list.width(); ++i) {
for (size_t j = j < list.height(); ++j) {
sum += list[i][j];
}
}