为什么即使条件为真,我的功能也不会停止?

时间:2017-11-24 16:29:47

标签: python recursion

我通过日志功能测试单词编号是否为2的幂。如果单词数字很低,我会将单词附加到'。'直到长度变为2的幂。例如,如果单词(W)是' abcd',则len(W)= 4,即2 ^ 2。该功能将停止。如果W是' abcdef',len(W)= 6,我想通过'附加单词。',因此它变为' abcdef ..&# 39;新的W长度为8,即2 ^ 3。

请检查我需要更改的位置。

import math

def powerOf2(W):
    logP = math.log2(len(W))
    if isinstance(logP, int):
        return W
    else:
        W.append('.')
        powerOf2(W)

当我跑步时

W = list('abcd')
powerOf2(W)

程序以"最大递归"停止。我认为情况属实。什么似乎有问题?

工作脚本。我更改了isinstance函数。

import math

def powerOf2(W):
    logP = math.log2(len(W))
    if (logP).is_integer():
        return W
    else:
        W.append('.')
        powerOf2(W)

1 个答案:

答案 0 :(得分:2)

您需要返回递归:

import math

def powerOf2(W):
    logP = math.log2(len(W))
    if isinstance(logP, int):
        return W
    else:
        W.append('.')
        return powerOf2(W)