0

我必须编写一个 main() 例程来测试以下测试用例的结果:

电源(8, 2)

电源(3, 3)

电源(2, 10)

使用 cout 在屏幕上显示计算值。这是我到目前为止所做的,但它不适合我

#include <iostream>
#include <cmath>

using namespace std;

int pwr (int&, int);

int main ()
{
int m, n;
cout << "Enter two positive integers;";
cin >> m >> n;
cout << endl << "The power is " << pwr(m,n) << endl;
return 0;
}

int power (int m, int n)
{
if (n<=1)
    return m;
else
    return m * power (m, n-1);
}
4

3 回答 3

2

int pwr (int&, int);应该是int power (int m, int n)

也许代码应该是这样的?

#include <iostream>
#include <cmath>

using namespace std;

int pwr (int, int);

int main ()
{
int m, n;
cout << "Enter two positive integers;";
cin >> m >> n;
cout << endl << "The power is " << pwr(m,n) << endl;
return 0;
}

int pwr (int m, int n)
{
if (n<=1)
    return m;
else
    return m * pwr (m, n-1);
}
于 2013-04-02T02:33:36.457 回答
2

您将您的功能声明为

int pwr (int&, int);

但您将其定义为

int power (int m, int n)

所以编译器找不到pwr里面的函数main

将函数定义更改为以下内容:

 int pwr(int m, int n)
 {
   if (n<=1)
      return m;
   else
      return m * pwr (m, n-1);
 }

由于你是在处理ints,所以你不需要通过引用传递。

于 2013-04-02T02:33:51.570 回答
0
  1. 不需要包括cmath
  2. 函数声明和定义不匹配int pwr (int&, int) vs int power (int m, int n)(名称不匹配和参数不匹配)
  3. 递归调用函数return m * power (m, n-1)应该是正确的pwr或者power
  4. 使用一些有意义的函数名和变量名。
  5. 使用缩进和括号使您的代码清晰。

#include <iostream>

using namespace std;
int getPower(int, int);

int main ()
{
    int value, power;
    cout << "Enter two positive integers;";
    cin >> value >> power;
    cout << "The power is " << getPower(value,power) << endl;
    return 0;
}

int getPower (int value, int power)
{
    if (power<=1){
        return value;
    }
    else{
        return value * getPower (value, power-1);
    }
}
于 2013-04-02T02:56:48.193 回答