You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++与Python幂运算函数运行差异排查:Python版本为何无法返回结果?

为什么你的C++快速幂能正常返回,Python版本却不行?

嘿,这个问题的核心其实是Python和C++对整数除法的处理逻辑不一样!我给你一步步拆解:

首先先把你给出的代码清晰列出来:

你的C++代码(可正常运行)

int exp(int a,int b){ 
    int result=1; 
    while(b!=0){ 
        if(b%2==1){ 
            result*=a; 
        } 
        b/=2; 
        a*=a; 
    } 
    return result; 
}

你的Python代码(无法返回结果)

def exp(a,b): 
    result=1 
    while b!=0: 
        if b%2==1: 
            result*=a 
        b/=2 
        a*=a 
    return result

问题根源:除法运算符的行为差异

在C++里,当你对两个整数执行b/=2时,这是整数除法——会自动截断小数部分,只保留整数商。比如:

  • 当b=3时,3/2=1
  • 当b=1时,1/2=0
    这样循环会在b变成0时正常终止,函数返回结果。

但在Python3中,/运算符是浮点数除法,不管输入是不是整数,都会返回浮点数结果:

  • 当b=3时,3/2=1.5
  • 当b=1.5时,1.5/2=0.75
  • 之后会不断变成0.375、0.1875……无限趋近于0,但永远不会等于0
    这就导致while b!=0的条件永远成立,进入无限循环,自然没法返回结果。

你的Python代码的错误点

就是误用了浮点数除法/,而没有使用Python中对应C++整数除法的//运算符。

不重写函数的修复方案

只需要把b/=2改成b//=2,让它执行向下取整的整数除法,和C++的行为保持一致即可:

def exp(a,b): 
    result=1 
    while b!=0: 
        if b%2==1: 
            result*=a 
        b//=2  # 替换为整数除法
        a*=a 
    return result

这样修改后,循环会在b变成0时正常终止,函数就能像C++版本一样返回正确的正整数幂结果了。

内容的提问来源于stack exchange,提问作者Hubertto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:24:23