Function I';我试着做阿克曼';IBasic上的s函数

Function I';我试着做阿克曼';IBasic上的s函数,function,Function,阿克曼函数是一种递归数学算法,可用于测试计算机执行递归的能力。设计一个函数ackermann(m,n),它解决了ackermann函数。在函数中使用以下逻辑: If m = 0, then return n + 1 If n = 0 then return ackermann(m-1, 1) Otherwise, return ackermann(m-1, ackermann(m, n-1)) 如果m=0,则返回n+1 如果n=0,则返回ackermann(m-1,1) 否则,返回ack

阿克曼函数是一种递归数学算法,可用于测试计算机执行递归的能力。设计一个函数
ackermann(m,n)
,它解决了ackermann函数。在函数中使用以下逻辑:

If m = 0, then return n + 1 If n = 0 then return ackermann(m-1, 1) Otherwise, return ackermann(m-1, ackermann(m, n-1)) 如果m=0,则返回n+1 如果n=0,则返回ackermann(m-1,1) 否则,返回ackermann(m-1,ackermann(m,n-1)) 程序在点击13后停止。谁能告诉我我做错了什么

declare main()
declare ackermann(m:int, n:int)

openconsole
main()
print:print "Press any key to quit...",
do:until inkey$<>""
closeconsole
end

sub main()
 def counter, m, n:int
 counter = 0
 for counter = 1 to 100
  print ackermann(counter)
 next counter
return

sub ackermann(m, n)
 if m = 0
  return = n + 1
 else
  if n = 0
   return = ackermann(m - 1, 1)
  else
    return = ackermann(m - 1, ackermann(m, n - 1))
  endif
endif
return
declare main()
声明阿克曼(m:int,n:int)
开放控制台
main()
打印:打印“按任意键退出…”,
do:直到inkey$“”
闭式控制台
结束
副标题()
def计数器,m,n:int
计数器=0
对于计数器=1到100
打印阿克曼(计数器)
下一个柜台
返回
副阿克曼(m,n)
如果m=0
返回=n+1
其他的
如果n=0
return=ackermann(m-1,1)
其他的
return=ackermann(m-1,ackermann(m,n-1))
恩迪夫
恩迪夫
返回

您的打印对账单是

print ackermann(counter)
但你的功能是

sub ackermann(m, n)

您需要在第一次调用中发送第二个参数。

请注意,Ackermann的函数增长速度非常快-超过m,n>(3,4)的值将有很多数字,如果超过(4,4)的值,您将很快找到可能完全用数字填满内存的数字

请参阅查看您试图计算的数字的大小…

declare main()
declare main()
declare ackermann(m:int, n:int)


openconsole
main()
print:print "Press any key to quit...",
do:until inkey$<>""
closeconsole
end

sub main()
print  Ackermann(3,5)
return

sub ackermann(m, n)
    if m = 0
        return = n + 1
    else
        if n = 0
            return = ackermann(m - 1, 1)
        else
             return = ackermann(m - 1, ackermann(m, n - 1))
        endif
    endif
return
声明阿克曼(m:int,n:int) 开放控制台 main() 打印:打印“按任意键退出…”, do:直到inkey$“” 闭式控制台 结束 副标题() 打印阿克曼(3,5) 返回 副阿克曼(m,n) 如果m=0 返回=n+1 其他的 如果n=0 return=ackermann(m-1,1) 其他的 return=ackermann(m-1,ackermann(m,n-1)) 恩迪夫 恩迪夫 返回
我也看到了;但我真的很好奇它是怎么变成13的,但如果这是错误的原因,我就不能继续了。是的,我一直在尝试在网上找到IBasic语法,这样我就可以看到这是怎么回事,但我能找到的只是便宜的下载站点,没有任何真实的信息。这是堆栈大小/内存限制吗?我知道有些语言会因为害怕无限递归而停止大型递归调用。