0
私は反復コードに変更したい次の再帰コードを持っています。関数は2つの場所での再帰呼び出しと非常に複雑なので、どこから開始するのかはわかりません。以下の関数に対する反復可能な実装はありますか?反復コードを反復的に書く
int ncip(int dim, double R){
int n, r = (int)floor(R);
if (dim == 1)
return 1 + 2*r;
n = ncip(dim-1, R); // last coord 0
for (int i=1; i<=r; ++i){
n += 2*ncip(dim-1, sqrt(R*R - i*i)); // last coord +- i
}
return n;
}
上のいくつかの最適化を行うことができます。https://monsiterdex.wordpress.com/2013/04/05 /整数格子を使用したn次元球面上の整数座標を使用する点の数 - 並列プログラミング部分 - i / –