我从简单到难,一起走上漫漫刷题路!
我会持续在我的博客中更新我每天刷题的内容!
相互交流!
大家一键三连,多多关注!
这是今天我给大家带来的题!以后难度逐渐加深!
1.斐波那契数列(非递归)
非递归实现求第n个斐波那契数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int fbnq(int n)
{
int a = 1;
int b = 1;
int c = 0;
while (n > 2)
{
c = a + b;
a = b;
b = c;
n--;
}
return c;
}
int main()
{
int n = 0;
scanf_s("%d", &n);
int ret = fbnq(n);
printf("%d\n", ret);
return 0;
}
2.斐波那契数列(递归)
递归实现求第n个斐波那契数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int fbnq(int n)
{
if (n <= 2)
return 1;
else
return fbnq(n - 1) + fbnq(n - 2);
}
int main()
{
int n = 0;
scanf_s("%d", &n);
int ret = fbnq(n);
printf("%d\n", ret);
return 0;
}
3.递归实现n的k次方
编写一个函数实现n的k次方,使用递归实现。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int power(int n, int k)
{
if (k <= 0)
return 1;
else
return n * power(n, k - 1);
}
int main()
{
int n = 0;
int k = 0;
scanf("%d%d", &n, &k);
int ret = power(n, k);
printf("%d\n", ret);
return 0;
}
4.计算一个数的每位之和(递归实现)
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int DigitSum(int num)
{
int g = 0;
int sum = 0;
if (num != 0)
{
g = num % 10;
num = num / 10;
sum = g + DigitSum(num);
}
return sum;
}
int main()
{
int num = 0;
scanf("%d", &num);
printf("%d\n", DigitSum(num));
return 0;
}
5.字符串逆序(递归实现)
编写一个函数 reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列,不是逆序打印。
要求:不能使用C函数库中的字符串操作函数。
比如:
char arr[] = "abcdef"; 逆序之后数组的内容变成:fedcba
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
int my_strlen(char* arr)
{
int count = 0;
while (*arr != '\0')
{
count++;
arr++;
}
return count;
}
void reverse_string(char* arr)
{
char* left = arr;
char* right = arr + my_strlen(arr) - 1;
char tmp = *left;
*left = *right;
*right = '\0';
if (strlen(arr) > 1)
reverse_string(arr + 1);
*right = tmp;
}
int main()
{
char arr[] = "abcdefg";
reverse_string(arr);
printf("%s\n", arr);
return 0;
}
6.strlen的模拟(递归实现)
递归实现strlen
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int my_strlen1(const char* str) {
if (*str == '\0')
return 0;
else
return 1 + my_strlen1(str + 1);
}
int main()
{
char arr[10] = { "lovel" };
int len = my_strlen1(arr);
printf("%d", len);
return 0;
}
7.strlen的模拟(非递归实现)
非递归实现strlen
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int my_strlen1(char* str)
{
int count = 0;
while (*str != '\0')
{
count++;
str++;
}
return count;
}
int main()
{
char s[] = "abcdef";
int len1 = my_strlen1(s);
printf("%d\n", len1);
return 0;
}
8.求阶乘
递归实现求n的阶乘(不考虑溢出的问题)
#define _CRT_SECURE_NO_WARNINGS 1
#include "stdio.h"
int Factorial(int n)
{
if (n == 1)
return n;
else
return n * Factorial(n - 1);
}
int main()
{
int n, m;
scanf("%d", &n);
printf("%d", Factorial(n));
return 0;
}