冒泡排序和青蛙台阶问题

递归思想的应用(青蛙跳台阶问题)


在学完递归的时候,感觉很不适应,因为递归与我们现实生活中的想法有点不同,但是只要你把这种方法学到家,那么有时用正常代码需要20-30行,但是用递归用10行之内就可以了,那么从中我们可以认识到:只有我们把不会的学会,学通,即使以后不用,也是能够提高我们的思维能力。


青蛙台阶问题:

我们都学过数学,都知道要想得到一个通用的规律,就需要不断地穷举,直到找到规律(这个过程大概是3---4次)

 再写到第4个台阶的问题,我也有点烦了,因为找不到规律,但是我们可以往递归的思想上考虑,而递归的主要是将大问题化为一些小问题(这些大问题只是小问题的数量的增加)。

 

 

什么是斐波那契数列呢?

其实这个知识在高中已经学过了,但我为了你们!!!!!!,,就讲讲吧。

斐波那契数列:1、2、3、5、8、13……………………

我们首先知道第一项:1和第二项2,那么之后的每一项都是前两项之和。

n=4时可以化为2个和3个台阶,这种出现的原因是:青蛙可以先跳一个或两个台阶,这样就剩下  n-1个和n-2个台阶,所以青蛙台阶问题与斐波那契问题是换汤不换药。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int frog(int n)
{
	if (n == 1)
	{
		return 1;
	}
	else if (n ==2)
	{
		return 2;
	}
	else
	{
		return frog(n - 1) + frog(n - 2);
	}


}

int main()
{
	//青蛙跳台阶问题
	int n = 0;
	printf("请输入青蛙所跳的台阶数:\n");
	scanf("%d", &n);
	int c=frog(n);
	printf("%d个台阶,青蛙可以跳%d种法", n, c);


	return 0;
}

 这就是结果,所以成功,来给自己一个鼓掌👏


 冒泡排序

 这样你们应该能懂了

接下来上硬菜,写代码

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	
	int n = 0;
	int arr[10] = { 0 };
	printf("请输入你要输入的元素个数:<个数在10个以内>\n");
	scanf("%d", &n);
	printf("请输入您要排序的数:\n");
	for (int i = 0; i < n; i++)//复制
	{
		scanf("%d", &arr[i]);
	}
	
	printf("排序前的:\n");
	for (int i = 0; i < n; i++)//打印排序前的
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	//冒泡排序
	for (int i = 0; i < n - 1; i++)
	{
		for (int j = 0; j < n-1 - i; j++)
		{
			if (arr[j] > arr[j + 1])//换顺序
			{
				int tmp = 0;
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}

	printf("排序后的:\n");
	for (int i = 0; i < n; i++)//打印排序后的
	{
		printf("%d ", arr[i]);
	}


}

 这样就结束了,😁拜拜!!!!

下次见

 如果有任何疑问和建议,请及时告诉我

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值