重複の可能性:
C++ の末尾再帰
私はC ++での末尾再帰が初めてです。私のプロジェクトでは、すべての関数を末尾再帰にする必要があります。次のコードをテストしましたが、正しく動作します。ただし、どのように実行したかは、末尾再帰としての資格があるかどうかはわかりません。
static int sum_helper(list_t hList, int accumulator){
if (list_isEmpty(hList))
return accumulator;
else {
accumulator += list_first(hList);
hList = list_rest(hList);
return sum_helper(hList, accumulator);
}
}
int sum(list_t list){
/*
// EFFECTS: returns the sum of each element in list
// zero if the list is empty.
*/
if (list_isEmpty(list))
return 0;
return sum_helper(list, 0);
}
ありがとう!