递归函数到底是怎么用,为啥这个递归函数不能正常运行?

qq_33334350 2016-01-22 10:50:33
请大牛帮我看一下代码哪里出问题了,
#include <iostream>
using namespace std;
int a[10][10];//全局变量保存杨慧三角
int main()
{
int write(int,int);//编写杨辉三角函数的声明
write(9,9);//调用函数
for(int i=0;i<=9;i++)
for(int j=0;j<=9;j++)
{
cout<<a[i][j]<<' ';
if(i==j)
{
cout<<endl;
break;
}
}
return 0;
}
int write(int i,int j)//定义函数**思路:递归函数
{
for(int m=0;m<=9;m++)
{
a[m][0]=1;
a[m][m]=1;
}
if(j>0&&i>1&&j<i)
a[i][j]=write(i-1,j-1)+write(i-1,j);
//cout<<"f="<<f<<endl;
cout<<"a"<<i<<j<<"="<<a[i][j]<<endl;;
return a[i][j];
}
...全文
296 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_33334350 2016-01-26
  • 打赏
  • 举报
回复
怎么就可以但跟踪程序运行?
码上大侠 2016-01-22
  • 打赏
  • 举报
回复
你要先搞清int write(int,int);这个方法是干什么,如果是要把杨辉三角写到a这个数组里的话就不需要两个参数,如果是计算a[i][j]的值的话write(9,9)是1,不需要递归,有点跑偏了
xulisb 2016-01-22
  • 打赏
  • 举报
回复
二楼又是正解,i,j都是9 那个条件成立不了啊
paschen 版主 2016-01-22
  • 打赏
  • 举报
回复
这个if (j > 0 && i > 1 && j < i)条件不满足,直接没有继续递归 预知为何不满足,可以单步跟踪程序运行,观察分析原因
赵4老师 2016-01-22
  • 打赏
  • 举报
回复
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门! 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出

64,644

社区成员

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

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