尾递归--求n的阶乘:
代码:
#include <stdio.h>
//求n的阶乘
long factorial(int n) {
if (n == 0 || n == 1) {
return 1;
}
else {
return factorial(n - 1) * n; // 递归调用
}
}
int main() {
int a;
printf("Input a number: ");
scanf("%d", &a);
printf("Factorial(%d) = %ld\n", a, factorial(a));
return 0;
}
示例:
中间递归--反转字符串:
代码:
#include<stdio.h>
#include<string.h>
char *reverse(char *str)
{
int len = strlen(str);
if(len>1)
{
char ctemp=str[0];
str[0]=str[len-1];
str[len-1]='\0';
reverse(str+1);
str[len-1]=ctemp;
}
return str;
}
int main()
{
char str[20]="123456789";
printf("%s\n",reverse(str));
return 0;
}
示例:
多递归--斐波那契数列
代码:
#include <stdio.h>
//递归计算斐波那契数
long fib(int n) {
if (n <= 2) {
return 1;
}
else {
return fib(n - 1) + fib(n - 2);
}
}
int main() {
int a;
printf("Input a number: ");
scanf("%d", &a);
printf("Fib(%d) = %ld\n", a, fib(a));
return 0;
}
示例: