日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

阿克曼函数

發布時間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 阿克曼函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

阿克曼函數

定義

阿克曼函數的定義如下:
Ack(m,n)={當m=0時返回n+1當n=0時返回Ack(m?1,1)當m,n>0時返回Ack(m?1,Ack(m,n?1))Ack(m,n)=\left\{ \begin{aligned} &當m=0時返回n+1\\ &當n=0時返回Ack(m-1,1)\\ &當m,n>0時返回Ack(m-1,Ack(m,n-1))\\ \end{aligned} \right. Ack(m,n)=???????m=0n+1n=0Ack(m?1,1)m,n>0Ack(m?1,Ack(m,n?1))?

規律

Ack(0,n)=n+1Ack(1,n)=Ack(0,Ack(1,n?1))=Ack(0,Ack(0,Ack(1,n?2)))=Ack(0,Ack(0,Ack(0,Ack(1,n?3))))=......=Ack(...,Ack(1,0)...)=Ack(...,Ack(0,1)...)=......=n+2Ack(2,n)=Ack(1,Ack(2,n?1))=Ack(1,Ack(1,Ack(2,n?2)))=Ack(1,Ack(1,Ack(1,Ack(2,n?3))))=......=Ack(...,Ack(2,0)...)=Ack(...,Ack(1,1)...)=......=2n+3Ack(3,n)=Ack(2,Ack(3,n?1))=Ack(2,Ack(2,Ack(3,n?2)))=Ack(2,Ack(2,Ack(2,Ack(3,n?3))))=......=Ack(...,Ack(3,0)...)=Ack(...,Ack(2,1)...)=......=2n+3?3Ack(4,n)=Ack(3,Ack(4,n?1))=Ack(3,Ack(3,Ack(4,n?2)))=Ack(3,Ack(3,Ack(3,Ack(4,n?3))))=......=Ack(...,Ack(4,0)...)=Ack(...,Ack(3,1)...)=......=(有n+3個2)2222...2?3Ack(0,n)=n+1\\Ack(1,n)=Ack(0,Ack(1,n-1))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(0,Ack(0,Ack(1,n-2)))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(0,Ack(0,Ack(0,Ack(1,n-3))))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=......\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(...,Ack(1,0)...)\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(...,Ack(0,1)...)\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=......\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=n+2\\Ack(2,n)=Ack(1,Ack(2,n-1))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(1,Ack(1,Ack(2,n-2)))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(1,Ack(1,Ack(1,Ack(2,n-3))))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=......\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(...,Ack(2,0)...)\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(...,Ack(1,1)...)\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=......\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=2n+3\\Ack(3,n)=Ack(2,Ack(3,n-1))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(2,Ack(2,Ack(3,n-2)))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(2,Ack(2,Ack(2,Ack(3,n-3))))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=......\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(...,Ack(3,0)...)\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(...,Ack(2,1)...)\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=......\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=2^{n+3}-3\\Ack(4,n)=Ack(3,Ack(4,n-1))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(3,Ack(3,Ack(4,n-2)))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(3,Ack(3,Ack(3,Ack(4,n-3))))\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=......\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(...,Ack(4,0)...)\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=Ack(...,Ack(3,1)...)\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=......\\\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space\space=(有n+3個2)2^{2^{2^{2^{^{...^2}}}}}-3Ack(0,n)=n+1Ack(1,n)=Ack(0,Ack(1,n?1))?????????????????=Ack(0,Ack(0,Ack(1,n?2)))?????????????????=Ack(0,Ack(0,Ack(0,Ack(1,n?3))))?????????????????=......?????????????????=Ack(...,Ack(1,0)...)?????????????????=Ack(...,Ack(0,1)...)?????????????????=......?????????????????=n+2Ack(2,n)=Ack(1,Ack(2,n?1))?????????????????=Ack(1,Ack(1,Ack(2,n?2)))?????????????????=Ack(1,Ack(1,Ack(1,Ack(2,n?3))))?????????????????=......?????????????????=Ack(...,Ack(2,0)...)?????????????????=Ack(...,Ack(1,1)...)?????????????????=......?????????????????=2n+3Ack(3,n)=Ack(2,Ack(3,n?1))?????????????????=Ack(2,Ack(2,Ack(3,n?2)))?????????????????=Ack(2,Ack(2,Ack(2,Ack(3,n?3))))?????????????????=......?????????????????=Ack(...,Ack(3,0)...)?????????????????=Ack(...,Ack(2,1)...)?????????????????=......?????????????????=2n+3?3Ack(4,n)=Ack(3,Ack(4,n?1))?????????????????=Ack(3,Ack(3,Ack(4,n?2)))?????????????????=Ack(3,Ack(3,Ack(3,Ack(4,n?3))))?????????????????=......?????????????????=Ack(...,Ack(4,0)...)?????????????????=Ack(...,Ack(3,1)...)?????????????????=......?????????????????=(n+32)2222...2?3
接下來的Ack(m,n)Ack(m,n)Ack(m,n)就以此類推。

假如讓你用python或C++或Java編寫,你會嗎?
下面是參考答案(均用遞推方式):

python編寫

#函數部分 def Ack(m,n):if m==0:return n+1elif n==0:return Ack(m-1,1)else:return Ack(m-1,Ack(m,n-1)) #輸入部分 m=int(input("")) n=int(input("")) print(Ack(m,n))

C++編寫

#include<iostream> using namespace std; //函數部分 long long Ack(int m,int n){if(m==0){return n+1;}else if(n==0){return Ack(m-1,1);}else{return Ack(m-1,Ack(m,n-1))} } //main部分 int main(){int m,n;cin>>m>>n;cout<<Ack(m,n)<<endl;return 0; }

Java編寫

import java.util.Scanner; public class Ack{public static void main(String[] args) {Scanner sc = new Scanner(System.in);int m = sc.nextInt();int n = sc.nextInt();System.out.println(ackerman(m,n));}public static long ackerman(long m, long n) {if (m < 0 || n < 0)return -1;else if (m == 0)return n + 1;else if (m > 0 && n == 0)return ackerman(m - 1, 1);else //m>0 and n>0return ackerman(m - 1, ackerman(m, n - 1));} }

小結

今天我們知道了阿克曼函數的定義和規律,還寫了python和C++以及java的程序。

總結

以上是生活随笔為你收集整理的阿克曼函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。