我正试图让我的代码打印出我最伟大的共同发明者。从技术上讲,我的代码应该可以工作,但在x=0之前,它总是会先运行一步,即使它应该打印x=gcd 你在代码中看到的所有东西都必须保留,因为它是结构基础,这是因为我的学校分配的。 这意味着我必须打印出x,并与r进行一个while循环!=0等等。。。 无论您最可能知道如何修复它,而无需我过度解释代码xD
def ggt2(x, y):
r = 1
while r != 0: #I have to use a while loop
if x < y:
r = x % y
x = y
y = r
print(x) #here it prints nothing at all
elif x > y:
r = x % y
y = x
x = r
print(x) #here it prints x = 0
x = input()
y = input()
ggt2(int(x), int(y))
编辑: 这是我们得到的伪代码。这是我必须遵循的基本结构。我们还被告知要切换x<-&燃气轮机;如果x<;y
GCD :var X,Y,R: int;
input X,Y;
R:=1;
while R ≠ 0 do
R:=X mod Y; X:=Y; Y:=R;
od;
output X.
您给出的伪代码称为欧几里德算法。它是基于除法的,x和y的顺序并不重要
输出:
顺序对于基于减法的算法很重要,这就是为什么要求您在
x < y
时切换x,y
阅读wiki以理解这两种算法
此代码从Wikipedia上的伪代码转换为Python,只做了一些小的更改
您的代码有一些问题。以下是您的代码:
这说明:
GCD
X
、Y
和R
的变量X
和Y
输入一个值R
设置为1R
不等于0
do:R
设置为X
%Y
(剩余的X
和Y
)X
设置为Y
Y
设置为R
X
此转换为Python的伪代码将是:
试着找出它是如何工作的,并在评论中告诉我它是否适合你
相关问题 更多 >
编程相关推荐