我很抱歉這個奇怪的標題。我不知道該怎么說。如果我有函式 func() 我該怎么做:
func(func(func(func(func(x)))))
它在哪里重復N次?
我正在嘗試實施康威的生命游戲。我有一個函式,它接受一個向量并輸出另一個向量,這是輸入向量的下一代。所以第 3 代的向量將是 func(func(func(x)))。
uj5u.com熱心網友回復:
簡單的方法,只需使用 for 回圈:
int x = some_initial_value;
for (int i = 0; i < NUMBER_OF_ITERATIONS; i)
{
x = func(x);
}
uj5u.com熱心網友回復:
雖然“簡單方法”在大多數情況下都有效,但我想為您提供一種方法,以應對回傳型別(對于給定引數型別)可能與引數型別不同的情況:
template<size_t i, typename F, typename Arg>
auto times(F f, const Arg& arg) {
if constexpr (i == 0) {
return arg;
} else {
return times<i - 1>(f, f(arg));
}
}
// usage: times<5>(func, x);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/537096.html
標籤:C 递归
上一篇:使用list()和append()關鍵字時,Python遞回生成器中斷
下一篇:如何從嵌套物件中獲取字串陣列
