#20_同学 发表于 2016-9-8 15:19:56

各位鱼油好,请教一个python递归的问题

本帖最后由 #20_同学 于 2016-9-8 15:24 编辑

python练习题里有一道是让写个代码把一个整数分解质因数,比如90=2*3*3*5这样子。
我想用递归的方式求解,代码如下:
num=int(input('请输入一个正整数:'))
def devFactor(x):
    from math import sqrt
    factor=2
    m=sqrt(x+1)
    while factor<=m:#分解的因数的取值范围
      if x%factor==0:
            print(factor,end=' ')
            x=x//factor
            devFactor(x)
            break
      factor+=1
    print (x)
   
devFactor(num)
            

但是我发现一个问题,就是每调用一次函数自身就会都打出来一个因数。。。{:10_291:}
求大神指教

补充一下,如果不加最后那个print,最后就会少打印一个因子出来。。。

百日维新 发表于 2016-9-8 16:53:54

print 本身就是递归的一部分啊,这也是递归的思想

百日维新 发表于 2016-9-8 16:55:13

只要调用一次 devFactor 函数 ,必然就会有一次 print

#20_同学 发表于 2016-9-8 17:12:49

百日维新 发表于 2016-9-8 16:55
只要调用一次 devFactor 函数 ,必然就会有一次 print

嗯。。我试一下if里面的print拿掉,那样可能就 不会多打印了,谢谢大神指点

#20_同学 发表于 2016-9-8 19:17:54

num=int(input('请输入一个正整数:'))
factor=2
import math
m=math.sqrt(num+1)
while factor<=m:
    if num%factor==0:
      print(factor,end=' ')
      num=num//factor
    elif num%factor!=0:
      factor+=1
if num >1:
    print(num)
递归有毒啊,这样就行了啊,但是还是想知道有没有能用递归处理的办法{:10_243:}
页: [1]
查看完整版本: 各位鱼油好,请教一个python递归的问题