gpt4 book ai didi

c++ - 求数次幂的递归函数

转载 作者:太空宇宙 更新时间:2023-11-03 10:29:54 25 4
gpt4 key购买 nike

我正在编写一个递归函数来求一个数的幂,它似乎正在编译但没有输出任何内容。

#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);
}

我试过调试它,它说问题出在这一行:return n * stepem(n, k-1);

k 似乎得到了一些奇怪的值,但我不明白为什么?

最佳答案

您应该检查指数 k,而不是永远不会改变的数字本身。

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

您的 k 值变得很奇怪,因为您将继续计算,直到基本用完内存,您将创建许多堆栈帧,其中 k 将变为“-infinity”(假设)。

也就是说,编译器在理论上可能会向您发出永远不会终止的警告 - 在这种特定情况下。但是,一般情况下自然不可能解决这个问题(查找Halting problem)。

关于c++ - 求数次幂的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20035710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com