Excel 科拉兹猜想。找到最小的一个k
我试图创建一个函数,它将返回最小的a_k,这样a_k等于1。我写了这段代码:Excel 科拉兹猜想。找到最小的一个k,excel,vba,Excel,Vba,我试图创建一个函数,它将返回最小的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 D
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
函数Collatz(N为整数)为整数
如果N Mod 2=0,则
F=N/2
其他的
F=(3*N)+1
如果结束
Collatz=F
端函数
函数Find(N为整数)为整数
k=0
当N 1时做
N=Collatz(N):k=k+1
如果k>1000000000,则退出Do
环
端函数
函数Collatz工作正常,但函数Find总是返回零。如何改进此功能?您忘记返回结果
Find=k回答得好!除此之外,还有一个风险,Excel将遵循本机的
Find
函数,而不是Pawel的Find
函数;我建议将名称更改为更独特的名称,例如FindN
@JustynaMK,因为它是Range.Find
(即Find
是Range
的一种方法,不是一个函数),没有这个问题,但我仍然同意您选择更合适的名称。