这个递归程序的执行顺序是怎样的?

sinat_35036964 2017-12-23 07:01:35


book[i]=0;第一次打印出来后,下面的执行步骤是怎样的呢?
希望大家帮帮看看
...全文
501 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
踏实,简单 2018-01-02
  • 打赏
  • 举报
回复
你用递归写一个输出1-100的数就懂了
  • 打赏
  • 举报
回复
public static void dfs(int step){ if(step == n + 1){ for (int i = 1 ; i <= n; i++){ System.out.println("a[" +i + "]=" +a[i]); } System.out.println(); return; } System.out.println("Step : " + step); for (int i = 1 ; i <= n; i++){ if(book[i] == 0){ a[step] = i; book[i] = 1; dfs(step + 1); book[i] = 0; } } return; } 这样看看执行顺序吧。。。 另:结构体里的数组你也可以定义为数组,或者定位为ArrayList,vector之类的。。。。
ooo-ooo 2017-12-25
  • 打赏
  • 举报
回复
你把初始的数据放到方法里面,然后拿笔和纸写一下每个循环的结果就知道怎么回事了
sinat_35036964 2017-12-23
  • 打赏
  • 举报
回复
不是,我不是想问动态规划的状态转移方程,我只想知道dfs方法递归的执行过程,我发一张运行结果的图 第一次打印出123后return,然后book[i]=0那里是怎样执行的?,以及后续的全排序是怎么打印出来的
oyljerry 2017-12-23
  • 打赏
  • 举报
回复
主要是先写出动态规划的转移方程。递归只是提现这个逻辑规则
sinat_35036964 2017-12-23
  • 打赏
  • 举报
回复
还有一个问题 这段C代码怎么改成Java代码,结构体中的数组在类中怎么实现呢? #include <stdio.h> struct queue { int data[100];//队列的主体,用来存储内容 int head;//队首 int tail;//队尾 }; int main() { struct queue q; int i; //初始化队列 q.head=1; q.tail=1; for(i=1;i<=9;i++) { //依次向队列插入9个数 scanf("%d",&q.data[q.tail]); q.tail++; } while(q.head<q.tail) //当队列不为空的时候执行循环 { //打印队首并将队首出队 printf("%d ",q.data[q.head]); q.head++; //先将新队首的数添加到队尾 q.data[q.tail]=q.data[q.head]; q.tail++; //再将队首出队 q.head++; } getchar();getchar(); return 0; }

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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