Ackerman函数的递归实现算法
输入:输入两个数字,先输入n,后输入m。
输出:Ackerman函数计算后的值。
示例:输入:4 2,输出:16
Ackerman函数A(n,m)定义如下:
有两个独立的整型变量m、n:
import java.util.Scanner;
/*Ackerman函数的递归实现算法。
输入:输入两个数字,先输入n,后输入m。
输出:Ackerman函数计算后的值。
示例:输入:4 2,输出:16
Ackerman函数A(n,m)定义如下:
有两个独立的整型变量m、n:
当m=0,n=1时,A(1,0)=2;
当m>=0,n=0时,A(0,m)=1;
当m=0,n>=2时,A(n,0)=n+2;
当m>=1&& n>=1时,A(n,m)=A(A(n-1,m),m-1);
*/
public class Ackerman {
public static int ackerman(int n, int m) {
if (m == 0 && n == 1) {
return 2;
}
if (m >= 0 && n == 0) {
return 1;
}
if (m == 0 && n >= 2) {
return n + 2;
}
return ackerman(ackerman(n - 1, m), m - 1);
}
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
System.out.println("输入两个整数:");
int n = sc.nextInt();
int m = sc.nextInt();
System.out.println(ackerman(n, m));
}
}