为什么我的代码比它应该的多生成一个?

2024-05-12 22:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试解决以下问题: 你的任务是建造一座由n个立方体组成的建筑。底部的立方体体积为n^3,上面的立方体体积为(n-1)^3,依此类推,直到顶部的立方体体积为1^3

您将获得建筑物的总体积m。给定m,你能找到你需要构建的多维数据集的数量n吗

函数findNb(find_nb,find nb,findNb)的参数将是一个整数m,如果存在这样的n,则必须返回整数n,如n^3 + (n-1)^3 + ... + 1^3 = m,如果不存在这样的n,则返回-1

示例:

findNb(1071225) --> 45
findNb(91716553919377) --> -1

这是我的密码:

def find_Nb(m):
    n = 1
    while n <= m // 2:
        total_n = 0
        for i in range(0, n):
            total_n += (n - i) ** 3
        n += 1
    
        if total_n == m:
            return n
            break
    
        else: 
            return -1

出于某种原因,在total_n==m的情况下,输出产生(n+1)。 例如,如果我们做m=100,输出应该是4;但是上面的代码产生5个;知道为什么吗

或者根据示例,当我在代码中运行m=1071225时,我应该得到45的输出,但我的代码生成46


Tags: 数据函数代码示例参数数量return体积
1条回答
网友
1楼 · 发布于 2024-05-12 22:27:39

这是我写的代码,它可以工作,但当我第一次尝试它时,我遇到了与您相同的问题。我修正了它,把n=I放在I+=1之前,这样n就有了正确的值,所以我想你也必须在说n+=1之前复制n,然后返回这个值

def findN(m):
    sum = 0
    i = 1
    while sum < m:
        sum += i ** 3
        n = i
        i += 1
    if sum == m:
        return n
    else:
        return -1
print(findN(1071225))

相关问题 更多 >