ハノイ再帰再帰問題ジャンピングカエルの塔

ハノイの塔再帰の1
ハノイの塔では、Aは、Bは、C三つの柱、上から昇順下にA列の手段によってn個のディスク、列B、列Aを配置することを前提とC列に移動させることにより、ディスク上の、又は小さなから低い場所へ上方から大へ。
A、^ 1-1のみ2に(A-> C)Cに直接移動し、ディスクを想像し、
両ディスクは、(A-> Bによって、A-> Cは、Aに想定B-> C)、2 ^ 2-1の三回、
による三枚のプレートを、想像(A-> C A-> B C- > B A-> C B-> A B-> C A A-で> C)は、
2 ^ 3-1 7を必要と
し、その後、最大のC A、Bに上今、あるn個のディスクが、問題は(N-1)番目の場所Bに帰することができる場合(N-1)プレート上で、Bに(N-2)番目に起因した後、最大Cに上などであることが、再帰によって実装。コードは以下の通りです

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
void Move(char pos1, char pos2)
{
	printf("%c->%c ", pos1, pos2);
}
//pos1开始位置
//pos2中间位置
//pos3结束位置
void Hanota(int n, char pos1, char pos2, char pos3)
{
	if (n == 1)
	{
		Move(pos1,pos3);
	}
	else
	{
		Hanota(n - 1, pos1, pos3, pos2);
		Move(pos1, pos3);
		Hanota(n - 1, pos2, pos1, pos3);
	}
}
int main()
{
	int n;
	printf("请输入盘子的数量\n");
	scanf("%d", &n);
	Hanota(n, 'A', 'B', 'C');
	system("pause");
	return 0;
}

2. Aのカエルは、クラス1レベルにジャンプすることができ、あなたはまた、レベル2の手順に飛び乗っすることができ、カエルがどのように多くのジャンプの合計をホッピングnは階段尋ねました。
方法ステップジャンプの一種;
ジャンプ二段階の二つの方法。1or2
ジャンプ3段階の三つの方法111又は12又は21;
ホップ4つの段階5つの方法1111又は121又は112又は211又は22
ホップNステップ、最後のホップまたは最終ホップを注文することができる2つのバンドが(ステップジャンプ(N-1)に起因するとジャンプすることができますN-2)の再帰的、ように方法をジャンプし、階段を追加します。コードは以下の通りです

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
int JumpFloor(n)
{
	if (n == 0)
	{
		return 0;
	}
	else if (n <= 2)
	{
		return n;
	}
	else
	{
		return JumpFloor(n - 1) + JumpFloor(n - 2);
	}
}
int main()
{
	int n=0;
	int ret = 0;
	printf("请输入台阶数\n", n);
	scanf("%d", &n);
	ret=JumpFloor(n);
	printf("%d\n", ret);
	system("pause");
	return 0;
}
公開された60元の記事 ウォン称賛23 ビュー3333

おすすめ

転載: blog.csdn.net/weixin_44945537/article/details/99686228