求助:关于全局变量归零的问题!!

ckcz123 2012-04-28 07:27:20


#include <iostream>
using namespace std;

int a=0;

void f(int n)
{
a+=n;
if (n!=1)
f(n-1);
}

int main()
{
int n;
while (cin >> n)
cout << a << endl;
return 0;
}



显然这个程序很有问题。。每次输入一个数后必须将a归零,才能得到正确的结果。。
应该怎么做?
...全文
359 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tbooka 2012-04-29
  • 打赏
  • 举报
回复
自己初始化的全局变量在程序的全局变量区,直到程序结束的时候才会销毁,里面的值也不会因为调用函数而清零,所以你必须每次调用函数的时候清零才不影响下一次计算
interim2012 2012-04-28
  • 打赏
  • 举报
回复
楼主说得不清不楚啊。
muyi66 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:
全局变量很不安全,是容易导致bug产生的玩意,应该尽力避免使用它。

个人经验:

new delete
malloc free
创建的动态变量跟全局变量比更不安全,是更容易导致bug产生的玩意,更应该尽力避免使用它。
[/Quote]我一直就认为非必要不用,难以控制也不用。
ljhhh0123 2012-04-28
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int a=0;

void f(int n)
{
a+=n;
if (n!=1)
f(n-1);
}

int main()
{
int n;
while (cin >> n){
a=0;
f(n);
cout << a << endl;
}
return 0;
}

是这样吗?
赵4老师 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
全局变量很不安全,是容易导致bug产生的玩意,应该尽力避免使用它。
[/Quote]
个人经验:

new delete
malloc free
创建的动态变量跟全局变量比更不安全,是更容易导致bug产生的玩意,更应该尽力避免使用它。

muyi66 2012-04-28
  • 打赏
  • 举报
回复
全局变量很不安全,是容易导致bug产生的玩意,应该尽力避免使用它。
muyi66 2012-04-28
  • 打赏
  • 举报
回复
这里的全局变量属多此一举,可以去掉:

int f(int n)
{
if (n==1)
return 1;
else
return n+f(n-1);
}
evencoming 2012-04-28
  • 打赏
  • 举报
回复
就按你那样做..
"全局变量"只是默认初始化为0而已.
ckcz123 2012-04-28
  • 打赏
  • 举报
回复
糟了。。
while里面忘了打f(n)了
ckcz123 2012-04-28
  • 打赏
  • 举报
回复
错了。。
main函数中的while后面应该是先f(n)后再输出a的

64,654

社区成员

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

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