递归函数问题

来源:百度知道 编辑:UC知道 时间:2024/05/20 17:52:57
编写一个程序,要求用户输入一个数和一个指数。编写一个递归函数,接受这两个数作为参数,并计算运算结果,也就是说,如果数为2,指数为4,该函数返回16。有高手看下么,我这哪错了?

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

int f(int n,int m);
int main()
{
int n,a,m;
cout << "输入:";
cin >> n >> m;

cout << "\n";
a = f(n,m);
cout << a <<" is the " << n;
cout << " number\n";
return 0;
}
int f(int n,int m)
{
cout << "得出 f("<< n <<")..";
cout << "得出 f2("<< m <<")..";
if(n <=1,m <= 2)
{
cout << "OK 1\n";
return (1);
}
else
{
cout << " f("<< n <<")..";
cout << " f("<< n+1 <<")..\n";
cout &

递归函数里不要
f(n,m) 调用 f(n,m) 如果 n,m不变
就是死循环,没有完了。
除非有专用的其他FLAG或数值管理。

你设的停止条件是 n<=1 m<=2
但是 f(n,m) 调用 f(n,m+1)
n没有变小 m越变越大,也是没有完了。

不知道你要算什么。如果是算次方的话用这个:
int f(int n,int m)
{
cout << "得出 f("<< n <<")..";
cout << "得出 f2("<< m <<")..";
if(m <= 0)
{
cout << "OK 1\n" ;
return (1);
}
else
{
cout << " f("<< n <<")..";
cout << " f("<< n+1 <<")..\n";
cout << " f("<< m <<")..";
cout << " f("<< m+1 <<")..\n";
// return (f(n,m)*f(n,m+1));
return f(n, m-1)*n;
}
}

输入 2 4 返回 16
数列公式: an = N^M
a0 = 1
an = a(n-1) * N
算 M 次乘法。

单步跟踪,会有发现的。。。