La récursivité de la fonction pour trouver la puissance d'un nombre

Je suis en train d'écrire une récursivité de la fonction pour trouver la puissance d'un nombre et il semble être de la compilation, mais ne pas afficher quoi que ce soit.

#include <iostream>

using namespace std;

int stepem(int n, int k);

int main()
{
    int x, y;

    cin >> x >> y;

    cout << stepem(x, y) << endl;

    return 0;
}

int stepem(int n, int k)
{
    if (n == 0)
        return 1;
    else if (n == 1)
        return 1;
    else
        return n * stepem(n, k-1);
}

J'ai essayé de débogage, et il dit que le problème est sur cette ligne :
return n * stepem(n, k-1);

k semble un peu bizarre, mais je ne peux pas comprendre pourquoi?

  • Eh bien la vérité est que votre n n'est jamais en train de changer. C'est probablement le fait d'une récursion infinie jusqu'à ce que vos piles se remplir.
  • N'est-ce pas une boucle infinie?
  • Eh bien, il ne faut pas changer, pourquoi devrait-il? Je veux multiplier le nombre n pour k fois.
  • Je pense que vous voulez vérifier k et pas n, je me trompe?
  • non, parce que la récursivité n'est pas la queue récursive
InformationsquelleAutor user3002211 | 2013-11-17