C语言简单递归问题合集(6道,快来看你会吗)

以下代码头文件可能没声明,还请读者自己声明一下。

1、递归方式实现打印一个整数的每一位

//int print(int n)
//{
//	if (n > 10)
//	{
//		print(n / 10);
//	}
//	printf("%d\n", n % 10);
//}
//
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	print(n);
//	return 0;
//}

2、递归和非递归分别实现求n的阶乘(不考虑溢出的问题)

//int fact(int n)
//{
//	if (n == 1)
//		return 1;
//	else
//		return n*fact(n - 1);
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret=fact(n);
//	printf("%d", ret);
//	return 0;
//}
//int main()
//{
//	int n = 0;
//	int fact= 1;
//	scanf("%d", &n);
//	while(n >= 1)
//	{
//		fact = fact * n;
//		n--;
//	}
//	printf("%d", fact);
//	
//	return 0;
//}

3、递归和非递归分别实现strlen函数

//int my_strlen(char* p)
//{
//	int count = 0;
//	int i = 0;
//	while(*p != '\0')
//	{
//		count++;
//		p++;
//	}
//	return count;
//}
//int main()
//{
//	char len[] = "abcd1";
//	int ret = my_strlen(len);
//	printf("%d", ret);
//	return 0;
//}


//递归算法
//int my_strlen(char* p)
//{
//	if (*p != '\0')
//		return 1 + my_strlen(p + 1);
//	else
//		return 0;
//}
//int main()
//{
//	char len[] = "abcd";
//	int ret = my_strlen(len);
//	printf("%d", ret);
//	return 0;
//}

4、

 
  

编写一个函数 reverse_string(char* string)(递归实现)

//实现:将参数字符串中的字符反向排列,不是逆序打印。

//要求:不能使用C函数库中的字符串操作函数。

//比如 :

//char arr[] = "abcdef";

//逆序之后数组的内容变成:fedcbaS

//char reverse_string(char* str)

//{
//	if (*str == '\0')
//	{
//		return;
//	}
//	reverse_string(str + 1);
//	printf("%c", *str);
//}
//int main()
//{
//	char arr[] = "abcdef";
//	reverse_string(arr);
//	return 0;
//}

5、编写一个函数实现n的k次方,使用递归实现。

//int square(int n, int k)
//{
//	if (k > 1)
//		return n * square(n, k - 1);
//	else
//		return n;
//}
//int main()
//{
//	int n = 0;
//	int k = 0;
//	scanf("%d", &n);
//	scanf("%d", &k);
//	int ret=square(n,k);
//	printf("%d", ret);
//	return 0;
//}

6、求第n个斐波那契数列

//int Fib(int n)
//{
//	if (n <= 2)
//		return 1;
//	else
//		return Fib(n - 1) + Fib(n - 2);
//}
//int main()
//{
//	int n = 0;
//	scanf("%d", &n);
//	int ret = Fib(n);
//	printf("%d", ret);
//	return 0;
//}
int Fib(int n)
{
	int i = 1;
	int a= 1;
	int b = 1;
	int c = 1;
	if (n <= 2)
		return 1;
	else
	{
		for (i=3;i<=n;i++)
		{
			c = a + b;
			b = a;
			a = c;
		}return c;
	}
}
int main()
{
	int n = 0;
	scanf("%d", &n);
	int ret = Fib(n);
	printf("%d", ret);
	return 0;
}

你可能感兴趣的:(c语言,娱乐学习,c语言,开发语言)