求问 关于函数自我调用的问题

discory 2006-03-05 05:28:13
#include <iostream>

using namespace std;

int findn(int,int);

int main( int argc, char *argv )
{
cout<<"n="<<findn(0,0)<<endl;
system("pause");
return 0;
}
int findn(int n,int s)
{
int s1,n1;
s1=s+n*n;
if(s1<1000)
{
n1=n+1;
findn(n1,s1); // 这句不是很明白,怎么调用的,不是无限循环了吗
}
else
return n-1;
}

我想findn()里面有调用自己,要造成无限循环啊,大虾门帮我讲讲这个程序
...全文
221 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenzhichao2008 2006-03-07
  • 打赏
  • 举报
回复
不明白你要实现什么样结果,不然帮你改一下
chenzhichao2008 2006-03-07
  • 打赏
  • 举报
回复
程序本身有问题

#include <iostream>

using namespace std;

int findn(int,int);

int main( int argc, char *argv )
{
cout<<"n="<<findn(0,0)<<endl;
system("pause");
return 0;
}
int findn(int n,int s)
{
int s1,n1;
s1=s+n*n;
if(s1<1000)
{
n1=n+1;
findn(n1,s1);
//程序有误,这里少了return 了
}
else
return n-1;
}
discory 2006-03-07
  • 打赏
  • 举报
回复
我也想知道错在哪里啊,当if 执行,到findn()后调用自己,一直到if 条件不满足后退出,
然后返回n-1,这个时候n的值是findn()循环后n的新值,因为findn()递归调用,不停的改变了
n。
我是这样认为,知道的大虾说看看对不
chenzhichao2008 2006-03-07
  • 打赏
  • 举报
回复
程序应该有错误的,当执行if时,你返回什么?
chenzhichao2008 2006-03-06
  • 打赏
  • 举报
回复
递归出口: s1>=1000
discory 2006-03-06
  • 打赏
  • 举报
回复
不对哦,我的结果是4246918,你们看对吗
willbetter 2006-03-06
  • 打赏
  • 举报
回复
int main( int argc, char *argv )
这第二个参数可以是这个类型吗?
不是char **argv
或:char *argv[];吗
不会死循环啊,这是递归调用啊,
discory 2006-03-06
  • 打赏
  • 举报
回复
这是我在看书时看到的一个例子,我有点看不懂,象是递归,
我这样理解的,当n < 1000 后程序结束循环,输出n - 1,对吗
aniude 2006-03-06
  • 打赏
  • 举报
回复
楼主想说什么??
chenzhichao2008 2006-03-06
  • 打赏
  • 举报
回复
这个程序看起来是有问题的
当n<1000时,返回值呢?

你要完成什么功能
是想做这样东西吗?
1*1+2*2+3*3+4*4.........
happydivid 2006-03-05
  • 打赏
  • 举报
回复
不会的,因为有一个else作为出口
zh2817 2006-03-05
  • 打赏
  • 举报
回复
就是一个递归调用问题:
第一次:n=0,s=0,s1=0,n1=1,
s1<1000,返回调用findn()s2=1,n2=2,
直到Sn>1000
返回n-1
hmilyforever 2006-03-05
  • 打赏
  • 举报
回复
没有问题啊,运行结果是
n=13
discory 2006-03-05
  • 打赏
  • 举报
回复
是不是当s1 < 1000会停止循环?
jobs002 2006-03-05
  • 打赏
  • 举报
回复
路过,传递的n是0,所以造成无限循环

64,676

社区成员

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

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