c语言函数的递推例子
1. 阶乘函数(factorial)
阶乘函数是一个常见的递推函数,用于计算一个数的阶乘。阶乘的定义是从1到n的连续整数的乘积,即n! = 1 * 2 * 3 * ... * n。可以使用递归来实现阶乘函数,如下所示:
```c
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
```
这个函数会不断调用自身,每次将n减1,直到n等于0时返回1,然后逐层返回结果,最终得到n的阶乘。
2. 斐波那契数列函数(fibonacci)
c语言用递归函数求n的阶乘斐波那契数列是另一个常见的递推函数,定义如下:F(0) = 0, F(1) = 1, F(n) = F(n-1) + F(n-2)。可以使用递归来实现斐波那契数列函数,如下所示:
```c
int fibonacci(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
} else {
return fibonacci(n-1) + fibonacci(n-2);
}
}
```
这个函数也会不断调用自身,每次将n减1或减2,直到n等于0或1时返回对应的值,然后逐层返回结果,最终得到第n个斐波那契数。
3. 汉诺塔函数(hanoi)
汉诺塔是一个经典的递推问题,需要将n个盘子从一根柱子移动到另一根柱子,其中有三根
柱子可供选择。汉诺塔问题可以用递归来解决,如下所示:
```c
void hanoi(int n, char source, char target, char aux) {
if (n == 1) {
printf("Move disk 1 from %c to %c\n", source, target);
} else {
hanoi(n-1, source, aux, target);
printf("Move disk %d from %c to %c\n", n, source, target);
hanoi(n-1, aux, target, source);
}
}
```
这个函数会不断调用自身,每次将n减1,直到n等于1时打印移动盘子的操作,然后逐层返回结果,最终完成整个汉诺塔的移动过程。
4. 阶乘和函数(factorial_sum)
阶乘和函数是一个稍微复杂一点的递推函数,它计算从1到n的所有数的阶乘之和。可以使用递归来实现阶乘和函数,如下所示:
```c
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n-1);
}
}
int factorial_sum(int n) {
if (n == 0) {
return 1;
} else {
return factorial(n) + factorial_sum(n-1);
}
}
```
这个函数在计算阶乘和时,每次调用阶乘函数来计算每个数的阶乘,然后逐层返回结果,最终得到从1到n的所有数的阶乘之和。
5. 斐波那契数列和函数(fibonacci_sum)
斐波那契数列和函数是一个类似阶乘和函数的递推函数,它计算从1到n的所有斐波那契数的和。可以使用递归来实现斐波那契数列和函数,如下所示:
```c
int fibonacci(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论