[英]Calculate power with a recursive function on C++
我需要制作一个使用递归函数计算给定数字幂的程序。 我写了这个,但是我无法使用它,一旦我接触到函数本身就会崩溃。 有什么帮助吗? 谢谢。
#include"stdafx.h"
#include<stdio.h>
#include<iostream>
using namespace std;
float power(float a, unsigned int b);
int main()
{
float a = 0;
unsigned int b = 0;
cout << "Insert base - ";
cin >> a;
cout << "Insert index - ";
cin >> b;
float result;
result = power(a, b);
cout << result;
return 0;
}
float power(float a, unsigned int b)
{
if (b <= 0)
{
return a;
}
return (a*power(a, b--));
}
取而代之的b--
你需要b-1
或--b
)
b--
将b
减一,这是无效的,因为b
该实例不再被使用。 它递归地传递b
的未归约副本。
同样,当b
为零时,结果应为1
而不是a
每当我们考虑递归时,首先想到的应该是停止标准。 接下来要考虑的是,不使用堆栈就无法进行递归。 说了这么多,让我们看看我们如何能够实现这个功能。
X ^ 0 = 1
基数可以提高为正或负实数。 让我们将问题限制为整数。
float power(float a, int b)
{
int bx = -b ? b < 0 : b;
if (bx == 0)
{
a = 1;
return a;
}
return 1/(a*power(a, --bx)) ? b < 0 : (a*power(a, --bx));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.