为什么在执行此代码时会打印 inf?

R N*_* Ny 1 c python recursion

def recur(a): 
  if( (a/2)!=0): 
    return recur(a/2) * 10+a%2
  else: 
      return 1
c=recur(10)
print(c)
Run Code Online (Sandbox Code Playgroud)

当我执行这段代码时,inf 被打印出来。任何人都可以解释我的错误和这段代码。(我将此代码从 C 转换为 python;原始代码如下所示)

#include <stdio.h>
int recur(int n)
{
    if((n/2)!=0)
     return (recur(n/2)*10+n%2);
    
    else
      return 1;
}
int main()
{ int d;
d=recur(10);
    printf("%d",d);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出 1010

Igo*_*vin 8

/Python 3 中的除法运算符是浮点除法,因此您的循环将永远运行。替换//并快乐。

  • 因为您的代码正在将值转换为二进制表示形式,并且 10 的二进制表示形式是 1010,因为 `10 = 8*1 + 4*0 + 2*1 + 1*0` (2认同)