免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: shock_bn
打印 上一主题 下一主题

征求高效算法 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2006-02-18 15:36 |显示全部楼层
#include <stdio.h>
#include <stdlib.h>

int A( int m , int n )
{
        int  rst;

        if(m < 0 || n < 0)
        {
                rst = -1;
        }else
        {
               
                if(0 == m)
                {
                        rst = n+1;
                }else
                {
                        if(0 == n)
                                rst = A(m-1, 1);
                        else
                                rst = A(m-1, A(m, n-1));
                }
        }

        return rst;
}

void main(int argc, char *argv[])
{
        int m, n, result;
        m = atoi(argv[1]);
        n = atoi(argv[2]);
       
        printf("已知:\n");
        printf("\tA(m, n) = n + 1                      当 m = 0 时  \n");
        printf("\tA(m, n) = A(m – 1, 1)               当 m ! = 0 且 n = 0 时 \n");
        printf("\tA(m, n) = A(m – 1, A(m, n - 1))     当 m ! = 0 且 n ! = 0 时 \n");
        printf("编程求解: A(m, n).\n");

        result = A(m, n);
    if(-1 == result)
                printf("Invalid arguments!\n");
        else
                printf("\n答:\n\t A(%d,%d) = %d\n", m, n, result);

        return;
}


假设上面程序名为 test .

>>> 执行:

D:\>test 3 9

>>> 输出:

已知:
        A(m, n) = n + 1                      当 m = 0 时
        A(m, n) = A(m – 1, 1)               当 m ! = 0 且 n = 0 时
        A(m, n) = A(m – 1, A(m, n - 1))     当 m ! = 0 且 n ! = 0 时
编程求解: A(m, n).

答:
         A(3,9) = 4093

>>> 当执行:
D:\>test 6  4

>>> 结果:堆栈溢出!

[ 本帖最后由 zhpzh 于 2006-2-18 15:52 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP