龙空技术网

递归函数

程序猿托马斯 112

前言:

此时咱们对“阿克曼函数的递归过程”都比较关注,我们都想要了解一些“阿克曼函数的递归过程”的相关资讯。那么小编同时在网上汇集了一些有关“阿克曼函数的递归过程””的相关文章,希望我们能喜欢,姐妹们一起来了解一下吧!

1.递归的数学函数

假定f(n)是直接递归的。要使函数f(n)的递归定义有一个完全的形式,需要满足如下条件:

①有一个基础部分,它包含n的一个或多个值,对这些值,f(n)是直接定义的(即不用递归就能求解)。为简单起见,我们假定f的定义域是非负整数,基础部分包含0≤n≤k,其中k为非负常数。

②在递归部分,右侧f有一个参数小于n,因此重复应用递归部分可以把右侧f的表达式转变为基础部分。

2.C++递归函数

程序1 计算n!的递归函数

int factorial(int n)

{

if (n <= 1) return 1;

else return n * factorial(n - 1);

}

程序2 累加数组元素a[0:n-1]

template<class T>

T sum(T a[], int n)

{

T theSum = 0;

for (int i = 0; i < n; i++)

theSum += a[i];

return theSum;

}

程序3 累加数组元素a[0:n-1]的递归代码

template<class T>

T rSum(T a[], int n)

{

if (n > 0)

return rSum(a, n - 1 + a[n - 1]);

return 0;

}

3.其他常见的递归函数斐波那契数列(Fibonacci)阿克曼函数(Ackerman)最大公约数(Greatest Common Divisor,GCD)格雷码(Gray Code):两个代码之间的海明距离是对应位不等的数量。例如,100和010的海明距离是2。一个(二进制)格雷码是一个代码序列,其中任意相邻的两个代码之间的海明距离是1。

标签: #阿克曼函数的递归过程 #阿克曼函数的递归过程移动应用软件开发 #用递归函数的方法编写程序求 fnmn