私は幸せな数字を見つけるプログラムを書こうとしています: more info here. これは学校の割り当てではありませんが、私はPython 2.7を練習しようとしています。 基本的には、すべての桁を二乗し続ける必要があるため、再帰はこれの不可欠な部分です。 私のコードでは、私はそれを実行し続けるために再帰を使用します。私は基底のケースを持っていますが、何らかの理由で、関数を呼び出しても再帰は起こりません。 最初の番号の数字の四角形を返すだけです。これはバグテストであり、Noneを返すと実行を停止します。 どうしたのですか?Python:再帰呼び出しなし値
num = raw_input('Pick a positive integer that you want to check for a happy number')
def happyn(number,second,third,fourth):
if len(number) == 2:
go = int(number[0])**2 + int(number[1])**2
elif len(number) == 3:
go = int(number[0])**2 + int(number[1])**2 + int(number[2])**2
elif len(number) == 4:
go = int(number[0])**2 + int(number[1])**2 + int(number[2])**2 + int(number[2]**2)
if len(number) == 1 and int(number) == 1 or int(number) == 7:
return True
elif len(number) == 1:
return False
else:
print go
go = str(go)
go1 = go[0]
print go1
if len(go) == 1:
go1 = go[0]
happyn(go1,0,0,0)
elif len(go) == 2:
go1 = go[0]
go2 = go[1]
happyn(go1,go2,0,0)
elif len(go) == 3:
go1 = go[0]
go2 = go[1]
go3 = go[2]
happyn(go1,go2,go3,0)
elif len(go) == 4:
go1 = go[0]
go2 = go[1]
go3 = go[2]
go4 = go[4]
happyn(go1,go2,go3,go4)
print happyn(num,0,0,0)
'行く= INT(番号[0])** 2 + INT(番号[1])** 2 + INT(番号[2])** 2 + INT(番号[2 ] ** 2) 'はバグのように見えます。これらのすべてのケースを置き換えるには 'go = sum(int(x)** 2 for x) 'を使用します –