vb.net - 我正在 VB.net 中编写 euclid 的算法,但由于某种原因它不起作用,我很确定我的逻辑是正确的。我哪里错了?
问题描述
如果我输入可被彼此整除的数字(例如 10 和 5、20 和 10),但如果数字不能彼此整除(例如 44 和 46)则失败。这是代码:
Public Class Form1
Dim num1, num2, temp, r As Integer
Function Algo(num1, num2)
If (num1 > num2) Then
temp = num2
num2 = num1
num1 = temp
End If
If (num2 Mod num1 = 0) Then
Return num1
Else
r = num2 Mod num1
num2 = num1
num1 = r
Algo(num1, num2)
End If
End Function
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim a1, a2 As Integer
a1 = Val(FirstNum.Text)
a2 = Val(SecondNum.Text)
GCD.Text = Val(Algo(a1, a2))
End Sub
如果输入的数字不可整除,它只会显示 0 作为答案: End Class我面临的问题的图片
解决方案
这一行:
Algo(num1, num2)
应该是这样的:
Return Algo(num1, num2)
您的算法(可能)很好,但是当您进行递归时,它不会返回任何内容,这就是您得到零的原因。
玩得开心!
推荐阅读
- firebase - QueryDocumentSnapshot 是否在监听我们使用它的次数?
- firebase - 如何在 vue 上处理 Firebase 身份验证
- python - 如何让我的代码更简单、更干净?(具有类别和类别产品的供应商机器)
- android - 颤振剪辑路径
- javascript - React Native:计时器不断重置
- python-multiprocessing - 多处理 - 如何最大化 CPU 使用率?
- c# - 错误:CS1009:无法识别的转义序列
- kotlin - 如何使用高阶函数而不是简单的 for 将这个 Kotlin 代码翻译成更好的代码
- latex - ***(作业中止,未找到合法 \end)LaTex 中的错误
- python - 使用 Python 登录 Gmail 并检测登录失败