递归可以使得在代码上更简洁明了。
头文件
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
递归和非递归分别实现求第n个斐波那契数。
斐波那契数指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
int Fbnq(int num)
{
//递归方法
//if (num == 1||num == 2)
//{
// return 1;
//}
//return Fbnq(num - 1) + Fbnq(num - 2);
//非递归方法
int num1 = 1;
int num2 = 1;
int tep = 0;
if (num <= 2)
{
return 1;
}
else
{
for (int i = 2; i < num; i++)
{
tep = num1 + num2;
num1 = num2;
num2 = tep;
}
return tep;
}
}
{
int n = 0;
printf("请输入一个数");
scanf("%d", &n);
printf("%d ",Fbnq(n));
system("pause");
return 0;
}
编写一个函数实现n^k,使用递归实现
int Power(int x,int y)
{
if (x > 0 && y == 0)
{
return 1;
}
if (x == 0 && y > 0)
{
return 0;
}
if (x > 0 && y > 0)
{
return x*Power(x, y - 1);
}
}
int main()
{
int n = 0;
int k = 0;
printf("请输入一个数-> ");
scanf("%d", &n);
printf("请输入次幂-> ");
scanf("%d", &k);
printf("%d\n ",Power(n,k));
system("pause");
return 0;
}
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,
//例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19
int DigitSum(int x)
{
if (x < 10)
{
return x;
}
return DigitSum(x / 10) + DigitSum(x % 10);
}
int main()
{
int n = 0;
printf("请输入一个数-> ");
scanf("%d", &n);
printf("%d ",DigitSum(n));
system("pause");
retu
编写一个函数 reverse_string(char * string)(递归实现)实现:将参数字符串中的字符反向排列。
void reverse_string(char* string)
{
if (*string != '\0')
{
reverse_string(string + 1);
}
printf("%c",*string );
}
int main()
{
char a[] = "abcd";
reverse_string(a);
system("pause");
return 0;
}
递归和非递归分别实现strlen
int Strlen(char* string)
{
//递归方法
/*if (*string == '\0')
{
return 0;
}
return 1 + Strlen(string + 1);*/
//非递归方法
int a = 0;
while(*string !='\0')
{
*string++;
a++;
}
return a;
}
int main()
{
char a[] = "abcd";
printf("%d ",Strlen(a));
system("pause");
return 0;
}
递归和非递归分别实现求n的阶乘
int Fctorial(int x)
{
//递归方法
//if (x == 0 || x == 1)
//{
// return x;
//}
//return x*Fctorial(x - 1);
//非递归方法
int a = 1;
for (int i = 1; i <= x; i++)
{
a = a*i;
}
return a;
}
int main()
{
int n = 0;
printf("请输入一个数-> ");
scanf("%d", &n);
printf("%d ",Fctorial(n));
system("pause");
return 0;
}
递归方式实现正序打印一个整数的每一位
void Printf_num(int x)
{
if (x > 9)
{
Printf_num(x/10) ;
}
printf("%d ", x % 10);
}
int main()
{
int n = 0;
printf("请输入一个数-> ");
scanf("%d", &n);
Printf_num(n);
system("pause");
return 0;
}