C语言 函数for循环内递归的问题

Scorpion_xyt 2018-10-03 11:33:39
void rec(int i,int j,int edge)
{
if(i!=0)
{
for(;j<edge;j++)
...
rec(i-1,j+1,edge);
...
}
}
void main()
{
rec(5,0,5);
}
这样一个函数,如何在一次递归中获取上层上上层直到第一层调用中for循环所在的位置?
例如main函数通过rec(5,0,5);调用该函数,假设在一个循环的第四次递归调用中,可获取一组值[0,1,3,4],则这组值代表在发生这次调用时,第一层for循环j=0,第二层j=1,第三层j=3,第四层j=4。
请问如何在每次循环每层调用中都能获取该次调用对应的这组值?
...全文
309 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
AlbertS 2018-10-08
  • 打赏
  • 举报
回复
做成参数往下传递了
赵4老师 2018-10-04
  • 打赏
  • 举报
回复
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
ckc 2018-10-04
  • 打赏
  • 举报
回复
另外设置一个数组,rec函数里记录递归层数,然后根据递归层数保存j在数组里

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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