| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1254 人关注过本帖
标题:嵌套函数不运行的原因?
只看楼主 加入收藏
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
结帖率:56.6%
收藏
 问题点数:0 回复次数:1 
嵌套函数不运行的原因?
链接:https://www.  来源:牛客网
问题:
输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
输入描述:

输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。
(1)下边是我自己写的dfs程序,但是调试的时候发现进不去dfs这个函数,请问这是什么原因?  怎么修改才能全部运行通过?
(2)如果程序中“global step”不写globle,那么step会不传到dfs中作为参数呢? 我如果不写global,运行程序时就会出现:局部变量step只是被声明但没有被应用,这是为什么?


class Solution:   
    def Permutation(self, ss):  #Permutation=全排列函数;ss=字符串
        n = len(ss)
        box = [0] * n  #n个盒子,用来放可能的字母(全局变量)
        book =[0] * n  #book记录字母有没有放入盒子中,放入则记为1,没放入时记为0 (全局变量)
        global step
        step = 1
        def dfs(step):   #内嵌函数dfs
            #global step
            #递归结束条件:当step大于n,即走到了第n+1个盒子面前时手中没有字母了
            if step > n:
                for j in range(n):  
                    print({0}.format(box[j]),end='')
                print('\n')
                return
            
            for i in range(n):       #放出每一个字母
                if book[i] == 0 :    #book[i]=0表示字母在手上
                    box[step] = ss[i]  #ss序列中的字母[i]放入盒子box[]中
                    book[i] = 1      #[i]号字母放入盒子中,记为1
                    
                    #第step个盒子放好字母后,然后走到下一个盒子面前
                    dfs(step+1)   #递归
                    book[i] = 0  #将刚才的字母收回
                return
        
ss = ['a','b','c']
result = Solution()
result.Permutation(ss)      
搜索更多相关主题的帖子: 函数 字符串 字符 字母 step 
2018-08-29 21:00
东海ECS
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:Python
等 级:版主
威 望:32
帖 子:412
专家分:1646
注 册:2023-1-24
收藏
得分:0 
内嵌函数dfs,由于是函数,需要调用才能执行,dfs是局部函数,在Permutation调用

会当凌绝顶,一览众山小.
2023-02-01 22:50
快速回复:嵌套函数不运行的原因?
数据加载中...
 
   



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

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