- 论坛徽章:
- 0
|
#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 编辑 ] |
|