| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1052 人关注过本帖
标题:用递归写了个求x 的n次幂的函数,结果错了,求指教
只看楼主 加入收藏
好笨的鸟
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2013-4-5
结帖率:100%
收藏
 问题点数:0 回复次数:3 
用递归写了个求x 的n次幂的函数,结果错了,求指教
代码如下,运行结果老是出错求指教
#include<iostream>
int main()
{
    using namespace std;
    //求x 的n次幂
    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);
}
double xn (double x,double n,double y,int z)
{
    if ( z = 0 )                    //定义了z 在第一轮判断 n >0 or n ==0 or n < 0
    {
        z = 1;
        if ( n > 0 )
            xn (x,n,y,z);
        if ( n == 0 )
            if ( x == 0 ) return 0;
            else return 1;
        if ( n < 0 )
        {    n = -n;
            xn (1/x,n,y,z);
        }
    }
    else
    {
        y *= x;
        if ( --n > 0 )
            xn(x,n,y,z);
        else return y;
    }
}
搜索更多相关主题的帖子: include double 
2013-04-05 15:07
fxbszj
Rank: 5Rank: 5
来 自:阿修罗界
等 级:职业侠客
威 望:4
帖 子:163
专家分:331
注 册:2012-10-8
收藏
得分:0 
我最讨厌递归了,看得头晕
2013-04-05 16:00
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:0 
   if ( z = 0 )这个表达不正确吧!   if ( z == 0 )这样吧!还有就是你y=0;是一直不变的,所以根本求不出来结果,你在考虑下。这样就可以了
#include<iostream>
using namespace std;
 int main()
 {

     //求x 的n次幂
     int x,n,y=1;
     cout<<"请输入 x 和 n : ";
     cin >> x >> n;
    while(n--)
    {
        y=y*x;
    }
    cout<<y<<endl;
    return 0;
 }
 

Maybe
2013-04-05 17:40
逆水寒刘
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:76
专家分:117
注 册:2013-3-27
收藏
得分:0 
#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);
    }
 
} 具体错误楼上已给出,这是我修改后的
2013-04-06 13:06
快速回复:用递归写了个求x 的n次幂的函数,结果错了,求指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029032 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved