def ap(n, f, x):
if n == 0:
return x
else:
return f(ap(n - 1, f, x))
ap(10, lambda x: x * 2, 1)
и на плюсах
#include <iostream>
#include <functional>
template<class T>
T ap(int n, std::function<T(T)> f, T x) {
if (n == 0) {
return x;
} else {
return ap(n-1, f, f(x));
}
}
int main() {
std::cout << ap<int>(10, [=](int x) { return x*2; }, 1);
}