Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 科拉兹猜想。找到最小的一个k_Excel_Vba - Fatal编程技术网

Excel 科拉兹猜想。找到最小的一个k

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

我试图创建一个函数,它将返回最小的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
函数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
的一种方法,不是一个函数),没有这个问题,但我仍然同意您选择更合适的名称。