[python,2018-06-25] 高德纳箭号表示法

概念

高德纳箭号表示法是种用来表示很大的整数的方法,由高德纳于1976年设计。它的意念来自是重复的乘法,乘法是重复的加法。

定义

计算

一个箭头

2↑3=2×2×2=8
2↑4=2×2×2×2=16
3↑3=3×3×3=27
a↑b= 
 

两个箭头

2↑↑3=2↑2↑2(注意:此处要从右往左计算)=2↑4=16
3↑↑3=3↑3↑3=3↑27=  =7625597484987
4↑↑3=4↑4↑4=4↑256≈ 
a↑↑b=
 

三个箭头

2↑↑↑3=2↑↑2↑↑2=2↑↑2↑2=2↑↑4=2↑2↑2↑2=2↑2↑4=2↑16=65536
3↑↑↑3=3↑↑3↑↑3=3↑↑7625597484987=3^3^3^3……(7625597484987个3)

a↑↑↑b=

PS:以上内容来自百度百科:https://baike.baidu.com/item/%E9%AB%98%E5%BE%B7%E7%BA%B3%E7%AE%AD%E5%8F%B7%E8%A1%A8%E7%A4%BA%E6%B3%95/6327240

下面是关于高德纳箭号表示法的python代码

#Author:shijt
#一个箭号时计算方法
def g(n,m):
    product=n**m
    return product
#二个箭号时计算方法
def g2(m,n):
    result=g(m,m)
    for i in range(1,n-1):
        print("g2",i,result)
        result=g(m,result)
    return result
# x个箭号时计算方法,未验证
def gx(m,x,n):
    if(x>2):
        result=gx(m,x-1,m)
        for i in range(1,n-1):
            print("gx=",x, i, result)
            #递归
            result = gx(m,x-1, result)
        return result
    elif(x==2):
        return g2(m,n)
    elif (x == 1):
        return g(m,n)
    else:
        return "error"

print(gx(3,3,3))

代码执行后,电脑已经快卡死了,所以我也不知道gx这个方法是否正确,至于秒天秒地的葛立恒数,暂时没有办法表示出来。

以上

原文地址:https://www.cnblogs.com/shijt/p/9223524.html