私はRiemannのParadoxを解決するためにPythonスクリプトを作成しています。入力された数字を取り、1/2,1/3,1/4,1/5 ...を1/2に加算または減算することです。比較を呼び出すと、比較が行われるたびにクラスを追加/減算した結果、再帰エラーが発生します。次のようにRecursionError:最大再帰の深さを超えました
私のコードは次のとおりです。
import math
#declare values of variables before they are referenced
goal = float(input("What number are you trying to achieve?"))
current_number = float(1)
negatives = (2)
positives = (3)
#-----------------------------------------------------
def add(goal,current_number,positives,negatives): #define the add operation for when the current number is less than the goal
current_number = current_number+(1/positives) #add current fraction to the current number
positives = positives+2 #Set the next additional fraction
comparison(goal,current_number,positives,negatives) #go to comparision of the current number to the goal
def subtract(goal,current_number,positives,negatives): #define the subtract operation for when the current number is greater than the goal
current_number = current_number-(1/negatives) #subtract current fraction from the current number
negatives = negatives+2 #set the next subtractional fraction
comparison(goal,current_number,positives,negatives) #go to comparision of the current number to the goal
def comparison(goal,current_number,positives,negatives): #define comparison between the current number to the goal
if current_number < goal:
add(goal,current_number,positives,negatives) #if the current number is less than the goal, go to add the next fraction to it
if current_number > goal:
subtract(goal,current_number,positives,negatives) #if the current number is greater than the goal, do to subtract the next fraction from it
if current_number == goal:
print("The equation for your number is 1+1/3...")
print("+1/",positives)
print("...-1/2...")
print("-1/",negatives)
#if the current number is equal to the goal, print the results
comparison(goal,current_number,positives,negatives) #do the comparison between the current number and the goal
私はこの問題を解決するために何ができるかと思いまして。
「比較()」で文の場合は、プログラムが最初から返さないことがあります。値を返す代わりに、元の関数に再帰しています。加算/減算関数からの値を返します。呼び出された関数を呼び出さないでください。 – bejota
@ fjorn1これは興味深いパラドックスです。最初はどのように動作するのか混乱しましたが、今はコードを修正することができたと思います:) –