1。
递归和非递归分别实现求第n个斐波那契数。
#include <stdio.h>
#include <assert.h>
#pragma warning(disable:4996)
int Fib_1(int size)
{
assert(size);
if(size<=2)
{
return 1;
}
return Fib_1(size-1)+Fib_1(size-2);
}
int Fib_2( int size)
{
int i = 2;
int data = 1;
int num = 1;
int tmp = 1;
assert(size);
if(size <= 2)
{
return 1;
}
for(i=2;i<size;i++)
{
data=tmp+num;
tmp=num;
num=data;
}
return data;
}
int main()
{
int size,data;
scanf("%d",&size);
data = Fib_2(size);
printf("%d ",data);
return 0;
}
2。
递归和非递归分别实现求n的阶乘 。
#include <stdio.h>
#pragma warning(disable:4996)
unsigned int Fac_1(unsigned int size)
{
if(size<=1)
{
return 1;
}
return Fac_1(size-1) * size;
}
unsigned int Fac_2( unsigned int size)
{
int i = 2;
int data = 1;
if(size <= 1)
{
return 1;
}
for(i=2;i<=size;i++)
{
data*=i;
}
return data;
}
int main()
{
unsigned int size,data;
scanf("%d",&size);
data = Fac_2(size);
printf("%d ",data);
return 0;
}
3。
编写一个函数实现n^k,使用递归实现 。
#include <stdio.h>
#pragma warning(disable:4996)
long long find_Power(unsigned int num,unsigned int power)
{
if(num<=1 || power == 0)
{
return 1;
}
return find_Power(num,power-1)*num;
}
int main()
{
unsigned int num;
unsigned int power;
long long data;
scanf("%d%d",&num,&power);
data = find_Power(num,power);
printf("%lld\n",data);
return 0;
}
4。
递归和非递归分别实现strlen 。
#include <stdio.h>
#pragma warning(disable:4996)
int my_strlen(char *str)
{
if('\0'== *str)
{
return 0;
}
return 1+ my_strlen(str+1);
}
int my_strlen_1(char *str)
{
int count = 0;
while(*str++)
{
count++;
}
return count;
}
int main()
{
char str[]="abcde1234";
//char str[]="";//0
int data;
data = my_strlen_1(str);
printf("%d\n",data);
return 0;
}
5。
写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。
#include <stdio.h>
#pragma warning(disable:4996)
int DigitSum(int data)
{
if(data<=9)
{
return data;
}
return DigitSum(data/10)+data%10;
}
int main()
{
int data = 1729;
int sum;
sum = DigitSum(1729);
printf("%d\n",sum);
return 0;
}
6。
编写一个函数reverse_string(char * string)(递归实现)
实现:将参数字符串中的字符反向排列。
要求:不能使用C函数库中 的字符串操作函数。
#include <stdio.h>
#pragma warning(disable:4996)
void Reverse_str(char *str)
{
if('\0'== *str)
{
return ;
}
Reverse_str(str+1);
printf("%c ",*str);
}
int main()
{
char str[]="abcd1234";
Reverse_str(str);
return 0;
}
7。
递归方式实现打印一个整数的每一位 。
#include <stdio.h>
#pragma warning(disable:4996)
void my_printf(int num)
{
if(num<9)
{
printf("%d ",num);
return num;
}
my_printf(num/10);
printf("%d ",num%10);
}
int main()
{
int num;
scanf("%d",&num);
my_printf(num);
return 0;
}
宏(题)
http://blog.csdn.net/romantic_c/article/details/79451028
位&翻转_1(题)
http://blog.csdn.net/romantic_c/article/details/79455583
位&翻转_2(题)
http://blog.csdn.net/romantic_c/article/details/79476849