怎么写这个递归啊

vovo2000 2011-08-15 09:27:18
我有一个这样子的要求
我有这样子的哈希,保存着这样子的数据
class01-->0
class02-->0
class03-->class02
class04-->calss03
class05-->class04
class06-->class03

key和value表示他们的集成关系,比如class03-->class02 表示class03 继承 class02;
我想输出成这样子
class01
class02
class03==>class02
class04==>calss03==>class02
class05==>class04==>class03==>class02
class06==>class03==>class02

这样子就可以一目了然,看清楚所有类了。
请问怎么做啊。需要用到递归不。
或者不用递归,怎么实现啊

急求明白帝。
在这里谢过了。100分聊表心意。

...全文
105 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_NBFA 2011-08-15
  • 打赏
  • 举报
回复
不晓得你说啥,你用perl拿个具体数据出来让我们瞧瞧
iambic 2011-08-15
  • 打赏
  • 举报
回复

说实话,不太想回这样的帖子。因为我看不出来你有不会的理由。

use strict;
use warnings;

my %x = (
class01 => 0,
class02 => 0,
class03 => 'class02',
class04 => 'calss03',
class05 => 'class04',
class06 => 'class03',
);

foreach my $k (sort keys %x) {
print "$k";
while ($k = $x{$k}) {
print "==>$k";
}
print "\n";
}



vovo2000 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 waistcoat23 的回复:]

Python code
for key in d:
s = ""
temp = key
while True:
if temp in d:
if s != "":
s += "==>"
s += temp
temp = ……
[/Quote]

这么快就回复了,太感谢了
可是我不会python。你可不可以用perl写一遍 O(∩_∩)O
Waistcoat23 2011-08-15
  • 打赏
  • 举报
回复
for key in d:
s = ""
temp = key
while True:
if temp in d:
if s != "":
s += "==>"
s += temp
temp = d[temp]
else: break
print(s)


上面的输出多一个==>
Waistcoat23 2011-08-15
  • 打赏
  • 举报
回复
d = {'class06': 'class03', 'class05': 'class04', 'class04': 'class03', 'class03': 'class02', 'class02': 0, 'class01': 0}
for key in d:
s = ""
temp = key
while True:
if temp in d:
s += "==>"
s += temp
temp = d[temp]
else: break
print(s)

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

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