首页 > 解决方案 > 柯拉兹猜想。找到最小的 a_k

问题描述

我正在尝试创建一个函数,它将返回最小的 a_k,使得 a_k 等于 1。我写了这段代码:

Function Collatz(N As Integer) As Integer

    If N Mod 2 = 0 Then
        F = N / 2
    Else
        F = (3 * N) + 1
    End If

    Collatz = F

End Function



Function Find(N As Integer) As Integer
 k = 0
 Do While N <> 1
    N = Collatz(N): k = k + 1
    If k > 10000000000# Then Exit Do
 Loop

End Function

函数 Collat​​z 工作正常,但函数 Find 总是返回零。我该如何改进呢?

标签: excelvba

解决方案


你忘了返回结果。

查找 = k


推荐阅读