| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1486 人关注过本帖
标题:递归的运算
只看楼主 加入收藏
十里画码
Rank: 2
等 级:论坛游民
帖 子:36
专家分:20
注 册:2018-7-9
结帖率:100%
收藏
 问题点数:0 回复次数:5 
递归的运算
阅读算法,回答下列问题:
1.设队列Q=(1,3,5,2,6)。写出执行算法F2后的队列
2.简述算法F2的功能。

void F2(Queue *Q){
    DataType e;
    if (!QueueEmpty(Q)){
        e=DeQueue(Q);
        F2(Q);
        EnQueue(Q,e);
        }
}

答案:6,4,2,5,3,1
        功能:将队列倒置

其中DeQueue(Q)删除Q的对头元素,将删除的元素赋给e
    EnQueue(Q,e)是插入元素e为Q的新的队尾元素


问题:在执行第一次时,DeQueue(Q)删除Q了对头元素,将删除的元素赋给e(此时e=1),然后进入调用,执行第二次F2,DeQueue(Q)又删除Q了对头元素,将删除的元素赋给e(此时e=2),如此类推,我的问题是在下一次执行e的赋值时为什么不会将上一次e的值覆盖,例如:第二次执行是  e=2  的值为什么不会将  e=1  的值覆盖


求路过的各位大神解答
搜索更多相关主题的帖子: 算法 执行 删除 元素 赋给 
2018-11-14 12:27
十里画码
Rank: 2
等 级:论坛游民
帖 子:36
专家分:20
注 册:2018-7-9
收藏
得分:0 
有没有大神,求解
2018-11-15 23:28
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:396
专家分:2640
注 册:2018-3-30
收藏
得分:0 
第二次进入F2(),是又一次调用,e是新生成的,和第一次调用的e不是同一个地址,作用域不同,不存在覆盖的问题。

saber,别哭.
2018-11-16 15:41
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
收藏
得分:0 
这个真的能地柜么?
2018-11-17 09:32
豆豆的滴
Rank: 9Rank: 9Rank: 9
来 自:湖南
等 级:贵宾
威 望:33
帖 子:368
专家分:1087
注 册:2018-5-7
收藏
得分:0 
递归
2018-11-17 09:33
十里画码
Rank: 2
等 级:论坛游民
帖 子:36
专家分:20
注 册:2018-7-9
收藏
得分:0 
回复 2楼 十里画码
谢谢了
2018-11-17 21:57
快速回复:递归的运算
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017401 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved