数学関数をプログラムしたいのですがf(x)=sqrt(1^1+sqrt(2^2+sqrt(3^3)+...+sqrt(x^x)))
、xはです1 <= x <= 10
。私は次のように関数をプログラムしようとしました:
double f1Rek(int x)
{
if( x < 1 ) return sqrt(power(x,x));
return sqrt(power(x,x) + f1Rek(x-1));
}
関数powerは、自己作成の再帰関数でもあります。
double power(int x, int n)
{
if( n == 0 ) return 1.0;
if( x == 0 ) return 0.0;
if( exp > 0 )
{
return n * power(n, exp - 1);
}
if( exp < 0 )
{
return 1 / ( n * power(n, -(exp-1));
}
}
問題はf1Rek(int x)
関数です。これは。で始まるためsqrt(x^x + sqrt( x-1^x-1...
です。どうすれば非常にエレガントな方法で問題を解決できますか?
アップデート:
Jim Balterの答えで、私は2つの引数を持つ関数を作成しました。
double f2Rek(int i, int x)
{
if( i <= x )
{
return sqrt(power(i,i) + f2Rek(i+1, x));
}
else return 0.0;
}
1つの引数だけで再帰関数を定義する可能性はありますか?