c语言函数递归调用简单例子
函数递归调用是指函数调用自身的过程。这种调用方式可以用来解决一些需要重复执行相同或相似任务的问题。下面列举了一些常见的以c语言函数递归调用为例的简单例子。
1. 阶乘函数
阶乘函数是一个经典的递归函数。它的定义如下:
int factorial(int n)
{
if(n == 0)
return 1;
else
return n * factorial(n-1);
}
该函数通过递归调用自身来计算n的阶乘。
2. 斐波那契数列
斐波那契数列是由0和1开始,之后的数都是前面两个数之和。它的递推式为:f(n) = f(n-1) + f(n-2),其中f(0) = 0,f(1) = 1。该数列可以用递归函数求解,代码如下:
int fibonacci(int n)
{
if(n == 0)
return 0;
else if(n == 1)
return 1;
else
return fibonacci(n-1) + fibonacci(n-2);
}
3. 求和函数
求和函数可以用递归来实现,代码如下:
int sum(int n)
{
if(n == 0)
return 0;
else
return n + sum(n-1);
}
该函数通过递归调用自身来计算1到n的和。
4. 判断回文字符串
回文字符串是指正着读和倒着读都一样的字符串。可以使用递归函数来判断一个字符串是否为回文字符串,代码如下:
int is_palindrome(char *s, int left, int right)
{
if(left >= right)
return 1;
else if(s[left] != s[right])
return 0;
else
return is_palindrome(s, left+1, right-1);
}
该函数通过递归调用自身来判断字符串s是否为回文字符串。
5. 计算幂
c语言斐波那契数列计算幂可以使用递归函数来实现,代码如下:
double power(double x, int n)
{
if(n == 0)
return 1;
else if(n % 2 == 0)
return power(x*x, n/2);
else if(n > 0)
return x * power(x, n-1);
else
return 1/x * power(x, n+1);
}
该函数通过递归调用自身来计算x的n次幂。
6. 斐波那契堆排序
斐波那契堆排序是一种高效的排序算法。它可以使用递归函数来实现,代码如下:
void fibonacci_heap_sort(int *a, int n)
{
FibonacciHeap *heap = fibonacci_heap_create();
for(int i=0; i<n; i++)
fibonacci_heap_insert(heap, a[i]);
for(int i=0; i<n; i++)
a[i] = fibonacci_heap_extract_min(heap);
fibonacci_heap_destroy(heap);
}
该函数通过递归调用自身来实现堆排序。
7. 汉诺塔问题
汉诺塔问题是一个经典的递归问题。它的规则如下:有三根柱子A、B、C,其中A柱子上有n个盘子,从上到下依次变小。现要求把A柱子上的所有盘子移动到C柱子上,但是在移
动过程中要满足以下规则:每次只能移动一个盘子,且不能把大盘子放在小盘子上面。可以使用递归函数来实现汉诺塔问题,代码如下:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论