C语言递归
学数据结构与算法学到了递归,有些题目比较难以理解,所以先练习了些基础的递归,慢慢理解
斐波那契数列
#include<stdio.h>
int feibo(int n) // 输入要求第n项斐波那契数
{
if (n <= 2)
return 1;
else
return feibo(n - 1) + feibo(n - 2);
}
void main()
{
int n;
printf("请输入你要求得第几项斐波那契数:");
scanf("%d", &n);
printf("%d", feibo(n));
}
n的k次方
#include<stdio.h>
int nk(int n, int k)
{
if(k == 0)
return 1;
else if(k == 1)
return n;
else
return n * nk(n, k - 1);
}
int main(void)
{
int n, k;
printf("请分别输入n和k:");
scanf("%d %d", &n, &k);
printf("%d", nk(n, k));
return 0;
}
整数各位数字之和
#include<stdio.h>
int DigitSum(int n)
{
if(n < 10)
return n;
else
return n % 10 + DigitSum(n / 10);
}
int main(void)
{
int n;
printf("请输入你要求各位数字和的正整数:");
scanf("%d", &n);
printf("%d", DigitSum(n));
return 0;
}
逆转字符串
#include<stdio.h>
void ReverseString(char *n)
{
// 使用数组指针移位
if (*(++n) != '\0')
ReverseString(n);
printf("%c", *(n - 1));
}
int main(void)
{
char n[100];
printf("请输入\n逆转前的字符串:");
scanf("%s", n);
printf("逆转后的字符串:");
ReverseString(n);
return 0;
}
求字符串长度
#include<stdio.h>
int length(char *n)
{
if(*n == '\0')
return 0;
else
return 1 + length(n + 1);
}
int main(void)
{
char n[100];
printf("请输入字符串:");
scanf("%s", n);
printf("%d", length(n));
return 0;
}