C语言之函数调用12—递归法求阿克曼函数

//递归法!

/*

===========================================

题目:编写阿克曼函数的递归函数程序!

A(m,n)=

  • n+1                (m=0)
  • A(m-1,1)       (m=0)
  • A(m-1,A(m,n-1))            (m!=0,n!=0)

===========================================

*/

#include<stdio.h>

int A(int m,int n)

{

if(m==0)

return n+1;

else if(n==0)

return A(m-1,1);

else

return A(m-1,A(m,n-1));

}

void main()

{

int m,n,p,flag=1;

while(flag)

{

printf("m=");

scanf("%d",&m);

printf("n=");

scanf("%d",&n);

p=A(m,n);

printf("A(%d,%d)=%d\n\n",m,n,p);

}

}

/*

===========================================

评:

这道题目很简单,已经明确了递归函数的具体形式,直接

写一个函数,调用即可!但是,如果要手算,这是一个相

当复杂的调用过程,如果让你把m和n分别从1到10算出来,

可能需要个把小时才行!利用计算机几分钟就搞定了!

===========================================

*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-27 23:00:27

C语言之函数调用12—递归法求阿克曼函数的相关文章

C语言之函数调用11—递归法求Hermite函数

/*递归法! ========================================== 题目: Hermite 函数:输入n.x,求Hn(x)? H0(x)=1; H1(x)=2*x; Hn(x)=2*x*Hn-1(x)-2*(n-1)Hn-2(x); ========================================== */ #include<stdio.h> float H(int n,int x) { if(n==0) return 1; if(n==1) r

C语言之函数调用13—递归法求N阶勒让德多项式的值

//递归法! /* ======================================================= n阶勒让德多项式,n=1时,Pn(x)=x;n>=1时, Pn(x)=((2n-1)x-Pn-1(x)-(n-1)Pn-2(x))/2. ======================================================= */ #include <stdio.h> #include <math.h> double p(

C语言之函数调用17—递归法之一般函数的调用(2)

//递归法 /* ================================================================== 题目:求F(60),其中F(n)定义如下: F(0)=0; F(1)=1; F(2n)=f(n)+3; F(2n+1)=F(n)+F(2n-1). ================================================================== */ #include<stdio.h> double F(in

C语言之函数调用16—递归法之一般函数的调用

//递归法 /* ================================================================== 题目:F(x,1)=1 F(x,n)=F(2x+1,n-1)*x  (n>1) ================================================================== */ #include<stdio.h> double F(float x,int n) { if(n==1) return

C语言之函数调用17—递归法之中的一个般函数的调用(2)

//递归法 /* ================================================================== 题目:求F(60),当中F(n)定义例如以下: F(0)=0; F(1)=1; F(2n)=f(n)+3; F(2n+1)=F(n)+F(2n-1). ================================================================== */ #include<stdio.h> double F(

C语言之函数调用14—递归法打印勒让德多项式前N项

//递归法 /* ================================================================== 题目:勒让德多项式 ================================================================== */ #include <stdio.h> double p(int n,double x) { if(n==0)return 1.0; else if(n==1)return x; else

C语言复习---矩形法求定积分函数

一:分析: 大一学习积分的时候,我们学习过,可以通过矩形法来求定积分. 思路就是将积分区间划分成n等份,然后将这n等份近似看成矩形(或梯形),然后对所有的矩形(或梯形)的面积进行求和. 二:简单的例子 求函数X^2在的定积分 矩形法: #include<iostream> #include<math.h> using namespace std; int main(){ float fun(float x); float a, b; cout << "请输入函

C语言之函数调用08—暴力法求4个数的最大公约数和最小公倍数

//数组枚举法 /* ========================================================== 题目:求4个数的最大公约数和最小公倍数. ========================================================== */ #include<stdio.h> #define N 4 main() { int a[N],gys,gbs; int i,j,m=1; int flag=1; printf("输

递归法求 5!

首先这个题目要用到递归,递归就是自己调用自己的意思,直到条件不满足. 设计一个f方法 具体代码如下: public int f(int n){ if(n>1){ return n*f(n-1);} else{ return 1; } } 当传入参数为5时, 5>1 返回5*f(4) f(4)则调用f方法传入参数为4 4>1 返回4*f(3) 同理 3>1 返回3*f(2) 2>1 返回2*f(1) 1=1 返回1 最后返回值为:5*4*3*2*1 只要输出即可求出5!. 原文