c语言 递归小练

//递归和非递归分别实现求第n个斐波那契数。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//递归
int fib(int n) {
if (n <= 2) {
return 1;
}
else {
return fib(n - 1) + fib(n - 2);
}
}
int main() {
int n ;
scanf("%d", &n);
printf("%d\n", fib(n));
system(“pause”);
return 0;
}
//非递归
int main() {
int n;
int num = 0;
int a = 1;
int b = 1;
scanf("%d", &n);
if (n <= 2) {
printf(“1”);
}
else{
for (int i = 3; i <= n; ++i) {
num = a + b;
b = a;
a = num;
}
printf("%d", num);
}
system(“pause”);
return 0;
}
//编写一个函数实现n^k,使用递归实现
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int mul(int n,int k) {
if (k == 1) {
return n;
}
return n*mul(n, k - 1);
}
int main() {
int n, k;
scanf("%d %d", &n, &k);
printf("%d\n", mul(n, k));
system(“pause”);
return 0;
}
//写一个递归函数DigitSum(n),输入一个非负整数,
//返回组成它的数字之和,
//例如,调用DigitSum(1729),
//则应该返回1 + 7 + 2 + 9,它的和是19
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int DigitSum(n) {
if (n < 10) {
return n;
}
return n%10+DigitSum(n / 10);
}
int main() {
int i;
scanf("%d", &i);
printf("%d\n", DigitSum(i));
system(“pause”);
return 0;
}
//用递归和非递归的方式实现n!
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//非递归
int main() {
int n;
scanf("%d", &n);
int num = 1;
for (int i = 1; i <= n; ++i) {
num = i;
}
printf("%d", num);
system(“pause”);
return 0;
}
//递归
int Factor(int n) {
if (n <= 1)
return 1;
else
return n
Factor(n - 1);
}
int main() {
int i;
scanf("%d", &i);
printf("%d",Factor(i));
system(“pause”);
return 0;
}
//递归的方式打印一个整数的每一位
#include<stdlib.h>
#include<stdlib.h>
void print(int n) {
if (n == 0) {
return;
}
print(n / 10);
printf("%d “,n%10);
}
int main() {
int i;
scanf(”%d", &i);
print(i);
system(“pause”);
return 0;
}
//递归和非递归分别实现strlen
#include<stdio.h>
#include<stdlib.h>
//非递归
 int my_strlen(char *arr) {
  int i;
  for (i = 0; arr[i]; ++i);
  return i;
 }
//递归
 int my_strlen1(char *arr) {
  if (*arr == ‘\0’) {
   return 0;
  }
  else {
   return 1 + my_strlen1(arr + 1);//递归调用自己
  }
 }
 int main() {
  char arr[] = “abcde”;
  my_strlen(arr);
  my_strlen1(arr);
  printf("%d\n", my_strlen(arr));
  printf("%d\n", my_strlen1(arr));
  system(“pause”);
  return 0;
 }

猜你喜欢

转载自blog.csdn.net/tianyuzilin/article/details/89088293