这个求幂的递归程序不对吗?

daring_t 2009-04-11 03:40:31
#include <iostream>
using namespace std;

class qiumi
{
int n;
public:
qiumi(int a){n=a;}
int computer(n)
{
if(n==1)
return 1;
else
return (n*computer(n-1));

}

};
void main()
{
qiumi m(10);
int answer=m.computer(qiumi::n);
cout<<answer<<endl;
}


编译通不过,说类中computer函数未定义n
...全文
194 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
daring_t 2009-04-11
  • 打赏
  • 举报
回复
哦,原来这样啊,看来我对功能函数访问私有变量还是有问题,恩,6楼很厉害,知道初学者犯错的地方!1,2楼也很好!
PS:现在用的一本c++练习册后面的错误太多了,有没好点的基础点的练习册啊?
  • 打赏
  • 举报
回复

class qiumi
{
int n;
public:
qiumi(int a){n=a;}
int get_n(){return n;}
int computer(int m)
{
if(m==1)
return 1;
else
return (m*computer(m-1));

}

};
void main()
{
qiumi m(10);
int answer=m.computer(m.get_n() );
cout <<answer <<endl;
}

xqls_xqls 2009-04-11
  • 打赏
  • 举报
回复
干吗要写个类呢?
一般的函数不行吗?
chin_chen 2009-04-11
  • 打赏
  • 举报
回复
你求幂,哪个次方,哪个是底数?

qiumi::n这么写啥意思??又不是静态常量~!

你先把你自己的思路理清了再说吧。
wangyadong 2009-04-11
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

class qiumi
{
int n;
public:
qiumi(int a){n=a;}
int computer(n)
{
if(n==1)
return 1;
else
return (n*computer(n-1));

}

};
void main()
{
qiumi m(10);
int answer=m.computer(qiumi::n);
cout < <answer < <endl;
}
tangshuiling 2009-04-11
  • 打赏
  • 举报
回复

搞清楚局部变量与类变量的区别:
#include <iostream>
using namespace std;

class qiumi
{
int n;
public:
qiumi(int a){n=a;}
int computer(int n) //局部变量与类变量同名本身就是设计上的大忌,形参变量名改成digital或其他
{
if(n==1) //这里的n是局部变量覆盖了this->n;
return 1;
else
return (n*computer(n-1));

}

};
void main()
{
qiumi m(10); //10初始化成员变量n,与computer算法中的n没有任何关系
int answer=m.computer(qiumi::n); //这里直接改成m.computer(10)
cout < <answer < <endl;
}

xiaocha 2009-04-11
  • 打赏
  • 举报
回复
你这是求阶乘,不是求幂!
改成下面这样可以工作了,但这个程序实在没必要用到class

#include <iostream>
using namespace std;

class qiumi
{
public:
int n;
qiumi(int a) {n=a;}

int computer(int n)
{
if(n==1)
return 1;
else
return (n*computer(n-1));
}
};

void main()
{
qiumi m(10);
int answer=m.computer(m.n);
cout << answer << endl;
}

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧