`
hzy3774
  • 浏览: 985190 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

C算法的一些递归实例

 
阅读更多
#include <stdio.h>

int fibonacci(int a){//fibonacci数列,第一二项为1;后面的每一项为前两项之和
	if (a == 1 || a == 2)
	{
		return 1;
	}else{
		return fibonacci(a - 1) + fibonacci(a - 2);
	}
}

void main(){
	printf("%d\n",fibonacci(40));
}

 

递归将整形数字转换为字符串

#include <stdio.h>

int toString(int i, char str[]){//递归将整形数字转换为字符串
	int j = 0;
	char c = i % 10 + '0';
	if (i /= 10)
	{
		j = toString(i, str) + 1;
	}
	str[j] = c;
	str[j + 1] = '\0';
	return j;
}

void main(){
	char str[100];
	int i;
	printf("enter a integer:\n");
	scanf("%d",&i);
	toString(i,str);
	puts(str);
}

 求一个整数阶乘:

int jiecheng(int i){
	if(i == 1){
		return 1;
	}else{
		return jiecheng(i - 1) * i;
	}
}

 

汉诺塔

#include <stdio.h>

void hanoi(int i,char x,char y,char z){
	if(i == 1){
		printf("%c -> %c\n",x,z);
	}else{
		hanoi(i - 1,x,z,y);
		printf("%c -> %c\n",x,z);
		hanoi(i - 1,y,x,z);
	}
}

void main(){
	hanoi(10,'A','B','C');
}

 

四个数找最大:

int max(int a, int b, int c, int d){
	if(a > b && a > c && a > d){
		return a;
	}else{
		max(b,c,d,a);
	}
}

 猴子吃桃,每天吃一半再多吃一个,第十天想吃时候只剩一个,问总共有多少:

int chitao(int i){//猴子吃桃,每天吃一半再多吃一个,第十天想吃时候只剩一个
	if(i == 10){
		return 1;
	}else{
		return (chitao(i + 1) + 1) * 2;
	}
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics