大弟 发表于 2021-7-9 16:41:24

求两个代码区别解释

请问下,两个代码为什么出来的结果不一样,第一个吧result=[]反正定义函数之前就可以正常,放在定义函数内就没有结果呢?

逃兵 发表于 2021-7-9 16:47:48

代码2中result是局部变量,每次调用都会重置为空列表[]

Twilight6 发表于 2021-7-9 17:09:57


放在函数外的 result 属于全局变量,而你若放在函数内部,属于局部变量,且每次递归过程都会重新生成新的 result 局部变量

在递归过程中的 result 变量相对于递归过程前的 result 变量属于局部变量,而递归过程前的相对于递归过程中的 result 变量可以视为 全局变量

所以若你放在函数内部,每次递归都是创建了新的 result 变量,导致了你每次 append 的都不是一个列表中,所以结果就自然不同,况且你递归过程返回的还不是 result
页: [1]
查看完整版本: 求两个代码区别解释