快捷搜索:  汽车  科技

原始递归函数(递归函数)

原始递归函数(递归函数)} else return n * factorial(n - 1);int factorial(int n){ if (n <= 1) return 1;

1.递归的数学函数

原始递归函数(递归函数)(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)

原始递归函数(递归函数)(2)


  • 阿克曼函数(Ackerman)

原始递归函数(递归函数)(3)


  • 最大公约数(Greatest Common Divisor GCD)

原始递归函数(递归函数)(4)


  • 格雷码(Gray Code):两个代码之间的海明距离是对应位不等的数量。例如,100和010的海明距离是2。一个(二进制)格雷码是一个代码序列,其中任意相邻的两个代码之间的海明距离是1。

原始递归函数(递归函数)(5)


猜您喜欢: