• [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这个方法是否正确,至于秒天秒地的葛立恒数,暂时没有办法表示出来。

    以上

  • 相关阅读:
    Virtualbox中不能为虚拟机打开一个新任务的原因及解决方法
    CSS 制作三角形原理剖析
    java 执行jar指定log4j.properties文件位置
    Git submodules
    IO模型
    Error during WebSocket handshake 403
    Proto(协议缓冲区)
    gRPC
    Node.js 模块机制
    Node.js 模块机制及常见面试问题解答
  • 原文地址:https://www.cnblogs.com/shijt/p/9223524.html
Copyright © 2020-2023  润新知