各位鱼油好,请教一个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,最后就会少打印一个因子出来。。。 print 本身就是递归的一部分啊,这也是递归的思想 只要调用一次 devFactor 函数 ,必然就会有一次 print 百日维新 发表于 2016-9-8 16:55
只要调用一次 devFactor 函数 ,必然就会有一次 print
嗯。。我试一下if里面的print拿掉,那样可能就 不会多打印了,谢谢大神指点 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]