Je souhaite programmer la fonction mathématique f(x)=sqrt(1^1+sqrt(2^2+sqrt(3^3)+...+sqrt(x^x)))
, où x doit être 1 <= x <= 10
. J'ai essayé de programmer la fonction comme ceci:Programmer une fonction récursive mathématique
double f1Rek(int x)
{
if(x < 1) return sqrt(power(x,x));
return sqrt(power(x,x) + f1Rek(x-1));
}
La puissance de fonction est aussi une auto créée fonction récursive:
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));
}
}
Le problème est la fonction f1Rek(int x)
, car il commence par la sqrt(x^x + sqrt(x-1^x-1...
. Comment puis-je résoudre le problème d'une manière très élégante?
Mise à jour:
Avec la réponse de Jim Balter, j'ai créé une fonction avec 2 arguments:
double f2Rek(int i, int x)
{
if(i <= x)
{
return sqrt(power(i,i) + f2Rek(i+1, x));
}
else return 0.0;
}
Est-il possible de définir une fonction récursive avec un seul argument.
Êtes-vous excité à ce sujet dix ou est-ce un factoriel? – DiegoNolan
Indice: 'double f1Rek (int k, int x)' – Beta
Que voulez-vous dire par les dix? 1 <= x <= 10, voulez-vous dire les dix ici? – Oni1