关闭

Ackermann函数

507人阅读 评论(2) 收藏 举报
分类:
#include "iostream"
#include "fstream"
using namespace std;

/*
a(m, n)= n + 1               m = 0
       = a(m-1, 1)           m>0, n=0
       = a(m-1, a(m, n-1))   m>0, n>0

  */

int a[20][20];

int 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));
}

int main()
{
    memset(a, 0, sizeof(a));
    int m, n;
    cout << "输入m:" ;
    cin >> m;
    cout << "输入n:";
    cin >> n;
    cout << "ackermann(" << m << "," << n << ")=" << ack(m, n) << endl;
    return 0;
} 

这里写图片描述

但以下结果是错误的,也不知为什么

int ack(int m, int n)
{
    if(a[m][n] > 0)
        return a[m][n];
    if(m==0) 
        return a[m][n] = n+1;
    else if(n==0) 
        return a[m][n] = ack(m-1,1);
    else 
        return a[m][n] = ack(m-1,ack(m,n-1));
}

这样是对的,但失去了备忘录的意义

int ack(int m, int n)
{
    if(m==0) 
        return a[m][n] = n+1;
    else if(n==0) 
        return a[m][n] = ack(m-1,1);
    else 
        return a[m][n] = ack(m-1,ack(m,n-1));
}
0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

算法_备忘录算法_Ackermann函数

Ackermann函数定义如下: 若m=0,返回n+1。 若m>0且n=0,返回Ackermann(m-1,1)。 若m>0且n>0,返回Ackermann(m-1,Ackermann(m,n-...
  • huangxiang360729
  • huangxiang360729
  • 2016-04-08 12:23
  • 449

strlen函数,strcat函数,strcpy函数,strncpy函数,strcmp函数

strlen函数: int strlen(const char *str) { assert(str != NULL); int len; while((*str++) != '\0') { ...
  • hyg0811
  • hyg0811
  • 2013-07-17 07:54
  • 4058

Oracle listagg函数、lag函数、lead函数

原文:http://blog.sina.com.cn/s/blog_4cef5c7b01016efp.html   Listagg函数 我们有时候会遇到这样的需求:“对员工列表进行操作,将每个部...
  • yin_jw
  • yin_jw
  • 2014-11-03 18:02
  • 1448

sigmod函数tanh函数ReLU函数

一. sigmod(x)函数sigmod函数的数学公式为: Θ(x)=11+e−x \Theta(x)=\frac {1}{1+e^{-x} } 函数取值范围(0,1),函数图像下图所示:二. ...
  • fendoubasaonian
  • fendoubasaonian
  • 2016-10-30 21:43
  • 12224

[SICP][1.10]Ackermann函数

阿克曼函数
  • qq_33988516
  • qq_33988516
  • 2017-02-16 11:12
  • 121

递归实例操作 ackermann函数

  • 2011-11-16 09:51
  • 849B
  • 下载

Ackermann函数

  • 2012-04-01 21:49
  • 2KB
  • 下载

UVa 371 Ackermann Functions (water ver.)

371 - Ackermann Functions Time limit: 3.000 seconds  http://uva.onlinejudge.org/index.php?option=c...
  • synapse7
  • synapse7
  • 2013-11-09 16:44
  • 1187

Ackermann 递归与非递归两种解法

  • 2008-11-20 13:36
  • 2KB
  • 下载

scala函数式编程

  • 2018-01-12 17:00
  • 35.41MB
  • 下载
    个人资料
    • 访问:362824次
    • 积分:11589
    • 等级:
    • 排名:第1541名
    • 原创:821篇
    • 转载:47篇
    • 译文:4篇
    • 评论:124条
    最新评论