我从简单到难,一起走上漫漫刷题路!
我会持续在我的博客中更新我每天刷题的内容!
相互交流!
大家一键三连,多多关注!
这是今天我给大家带来的题!以后难度逐渐加深!
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; }