1.递归和非递归分别实现求第n个斐波那契数
//非递归
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n = 0;
int i = 0;
int num = 0;
int num1 = 0;
int num2 = 0;
int Sn = 0;
printf("请输入n的值:\n");
scanf("%d", &n);
if (n <= 2)
{
printf("Sn=1\n");
}
else
{
num2 = 1;
num1 = 1;
for (i = 3; i < n; i++)
{
num = num1;
num1 = num2 + num1;
num2 = num;
Sn = num1 + num2;
}
printf("Sn=%d\n", Sn);
}
system("pause");
return 0;
}
//递归
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n = 0;
printf("请输入n的值:\n");
scanf("%d", &n);
int Sn=feibo(n);
printf("Sn=%d\n", Sn);
system("pause");
return 0;
}
int feibo(int n)
{
if (n <= 2)
{
return 1;
}
else
{
return feibo(n-1) + feibo(n - 2);
}
}
2.编写一个函数实现n^k,使用递归实现
//编写一个函数实现n^k,使用递归实现
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n = 0;
int k = 0;
printf("请输入n k的值:\n");
scanf("%d %d", &n,&k);
int Sn=ndekci(n,k);
printf("Sn=%d\n", Sn);
system("pause");
return 0;
}
int ndekci(int n,int k)
{
if (k < 2)
{
return n;
}
else
{
return n*ndekci(n, k - 1);
}
}
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n = 0;
int k = 0;
printf("请输入n的值:\n");
scanf("%d", &n);
int Sn=DiditSum(n,k);
printf("Sn=%d\n", Sn);
system("pause");
return 0;
}
int DiditSum(int n,int k)
{
if (n < 10)
{
return n;
}
else
{
k = n % 10;
n = n / 10;
return k+DiditSum(n, k);
}
}
5.实现strlen
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
char strlen[] = "asdfgh";
char str[1] = { 0 };
int i = 0;
printf("请输入要找的字符:\n");
scanf("%d", &str);
for ( i = 0; i < 6; i++)
{
if(str[0] == strlen[i])
{
break;
}
else
{
continue;
}
}
if (i < 6)
{
printf("找到了\n");
}
else
{
printf("没找到\n");
}
system("pause");
return 0;
}
6.递归和非递归分别实现求n的阶乘
//递归
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n = 0;
printf("请输入n的值:\n");
scanf("%d", &n);
int Sn=jiecheng(n);
printf("Sn=%d\n", Sn);
system("pause");
return 0;
}
int jiecheng(int n)
{
if (n <2)
{
return 1;
}
else
{
return n * jiecheng(n - 1);
}
}
//非递归
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n = 0;
int i = 0;
int Sn = 0;
printf("请输入n的值:\n");
scanf("%d", &n);
Sn = 1;
for (i = 1; i<=n; i++)
{
Sn *= i;
}
printf("Sn=%d\n", Sn);
system("pause");
return 0;
}
7.递归方式实现打印一个整数的每一位
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int n = 0;
int k = 0;
printf("请输入n的值:\n");
scanf("%d", &n);
print(n,k);
system("pause");
return 0;
}
int print(int n,int k)
{
if (n >= 10)
{
print(n/10,k);
}
k = n % 10;
printf("%d ", k);
}