注册 登录
编程论坛 C++教室

关于return 返回值的问题

好笨的鸟 发布于 2013-04-05 16:24, 415 次点击
有问题的代码
#include<iostream>
int main()
{
    using namespace std;
    double x,n,y;
    y = 1;
    double xn(double x,double n,double y);
    cout<<"请输入 x 和 n : ";
    cin >> x >> n;
    cout << endl
         << "x 的 n 次幂为 :"
         << xn(x,n,y);

}
    double xn (double x,double n,double y)
{        
        y *= x;
        if ( --n > 0 )
            xn(x,n,y);
        else return y;
}

能达到我要求的代码
#include<iostream>
int main()
{
    using namespace std;
    double x,n,y;
    y = 1;
    int z = 0;
    double xn(double x,double n,double y,int z);
    cout<<"请输入 x 和 n : ";
    cin >> x >> n;
    cout << endl
    //      << "x 的 n 次幂为 :"
    //      << xn(x,n,y,z);
    xn(x,n,y,z);
    double xn (double x,double n,double y)
{        using namespace std;
        y *= x;
        if ( --n > 0 )
            xn(x,n,y,z);
        else cout<<y;
}

求指教为什么两种情况结果不一样
5 回复
#2
邓士林2013-04-05 17:28
double xn (double x,double n,double y);这是一个double类型的函数,需要返回值的,返回的主函数当中,而cout<<y;这个就是直接输入的屏幕上了
#3
qunxingw2013-04-05 17:31
函数参数都不一致
#4
逆水寒刘2013-04-06 13:00
#include<iostream>
using namespace std;
double xn(double x,int n);//函数声明
int main()
{         
    double x;
    int   n;
    cout<<"请输入x和n(x必须大于0): ";
    cin >> x >> n;
    while(x<=0.0)
    {
        cout<<"x小于或等于0无意义。输入错误,请重新输入"<<endl;
        cin>>x;
    }
    cout<<x<<"的"<<n<<"次幂为:";
    cout<<xn(x,n);
    cout<<endl;
    return 0 ;
}
double xn(double x,int n)
{
    if(n==0||x==1)
        return 1;
    if(n>0)
        return x*xn(x,n-1);
    if(n<0)
    {    n=-n;
       x=1.0/x;
       return x*xn(x,n-1);
    }
 
} 我对你第一次的代码进行了更改,只是你写的代码格式太乱,改的我实在是……顺便提醒一下楼主,编代码时注意下问题说明及格式;
#5
hjb50742013-04-06 15:58
怎么都没有前置函数声明
#6
好笨的鸟2013-04-06 20:58
回复 4楼 逆水寒刘
非常感谢,关于 自己写递归时出现的逻辑问题也想明白了
1