gpt4 book ai didi

python - 为什么这个递归函数打印出的结果与我预期的相反?

转载 作者:太空宇宙 更新时间:2023-11-04 08:00:08 25 4
gpt4 key购买 nike

这是我的 Python 2.7 脚本。

import os.path, shutil

def makeFolderName(num, dirBase='./interactive'):
destDir= dirBase + '-' + str(num) + '/'
if os.path.isdir(destDir):
num += 1
makeFolderName(num)
else:
shutil.copytree(dirBase, destDir)

print destDir
return destDir


folderName= makeFolderName(1)

print folderName

这是打印输出。

./interactive-18/
./interactive-17/
./interactive-16/
./interactive-15/
./interactive-14/
./interactive-13/
./interactive-12/
./interactive-11/
./interactive-10/
./interactive-9/
./interactive-8/
./interactive-7/
./interactive-6/
./interactive-5/
./interactive-4/
./interactive-3/
./interactive-2/
./interactive-1/
====./interactive-1/

在该方法中,我认为如果 destDir 的值不是目录,这只会打印 destDir。它而是从最高值到最低值打印 num

folderName的值是最低的num,而不是最高的。

我希望 makeFolderName 返回一个目录名称,其中 num 比当前目录中存在的目录高一个。

我做错了什么?

最佳答案

你的错误是你应该在递归调用之后返回:

    if os.path.isdir(destDir):
num += 1
return makeFolderName(num)
else:
shutil.copytree(dirBase, destDir)

如果你不这样做,那么当makeFolderName返回时,这个函数会继续运行下面的代码,也就是打印num。但由于它是在递归调用返回后完成的,所以您会看到相反的数字。

关于python - 为什么这个递归函数打印出的结果与我预期的相反?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41625404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com