一、 求1+2+3+4+5+6+.....+n的和
#include<stdio.h>
int sum(int n);
int main() {
/*
//求1+2+3+4+5+6的和
//1、定义一个变量sum=0
int sum = 0;
for (int i = 1; i <= 6; i++) {
sum = sum + i;
}
printf("sum=%d\n",sum);
*/
int result = sum(6);
printf("%d\n",result);
return 0;
}
//递归函数(求1+2+3+4+5+....+n的和)
int sum(int n) {
//1、递归终止的条件
if (n==1) {
return 1;
}
//2、递归操作
return (sum(n - 1) + n);
}
二、猴子吃桃问题
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int monkeyEatPeach(int day);
int main {
//猴子吃桃问题:有一堆桃,第一天猴子吃了一半,觉得好吃,多吃了一个;第二天又吃了剩下的一
半,觉得好吃,又多吃了一个;
//第三天猴子又吃了剩下的一半,觉得好吃,又多吃了一个;第四天只剩下一个桃子。问:总共有多少
个桃子?
printf("请输入天数:");
int days = 0;
scanf("%d",&days);
int nums=monkeyEatPeach(days);
printf("总共有%d个桃子\n", nums);
return 0;
}
int monkeyEatPeach(int day) {
//1、递归终止的条件
if (day==1) {
return 1;
}
//2、递归操作
return (monkeyEatPeach(day - 1) + 1) * 2;
}
三、斐波那契数
#define _CRT_SECURE_NO_WARNINGS 1
#define SIZE 100
#include<stdio.h>
int fib(int n);
int main() {
printf("求斐波那契的第n项目:");
int n = 0;
scanf("%d",&n);
int res = fib(n);
printf("%d",res);
printf("请输入");
scanf("");
return 0;
}
//求斐波那契的第n项
//声明一个数组,用来保存fib的每一项
int memo[SIZE] = { 0 };//记忆化搜索
int fib(int n) {
//1、递归终止的条件
if (n == 1 || n == 2) {
memo[n] == 1;
return memo[n];
}
//2、递归操作
if (memo[n] == 0) {
memo[n]= fib(n - 1) + fib(n - 2);
}
return memo[n];
}
四、计算字符串长度
#define _CRT_SECURE_NO_WARNINGS 1
#define SIZE 100
#include<stdio.h>
#include<string.h>
int myStrLen(char* str);
int main() {
//计算字符串长度
printf("请输入字符串:");
char str[1024] = { 0 };
scanf("%s",str);
//int len=strlen(str);
int len = 0;
char* cur = str;
while (*cur!='\0') {
len - len + 1;
cur++;
}
printf("%s的长度为%d\n",str,len);
return 0;
}
int myStrLen(char* str) {
//1、递归终止的条件
if (*str == '\0') {
return 0;
}
//2、递归操作
return 1 + (myStrLen(str + 1));
}