汉诺塔和斐波那契数列
算法笔记
算法笔记及自我总结
提示:以下是本篇文章正文内容,下面案例可供参考
一、汉诺塔
C++版
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
void move(int n, char x, char y)
{
cout << "第" << n << "个盘子" << "从" << x << "移到" << y << endl;
}
void hanoi(int n, char a, char b, char c)
{
if (n == 1)
{
move(1, a, c);
}
else
{
hanoi(n - 1, a, c, b);
move(n, a, c);
hanoi(n - 1, b, a, c);
}
}
int main()
{
int n;
cin >> n;
hanoi(n, 'A', 'B', 'C');
system("pause");
return 0;
}
Python版
def Move(n,x,y):
print('第'+str(n)+'个盘子'+'从'+x+'移到'+y)
def Hanoi(n,a,b,c):
if n==1:
Move(1, a, c)
else:
Hanoi(n-1,a,c,b)
Move(n,a,c)
Hanoi(n-1,b,a,c)
if __name__=="__main__":
n=int(input())
Hanoi(n,"A","B","C")
二、斐波那契数列
C++版
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
int Fibonnacci(int n)
{
if (n <= 1) return n;
else return Fibonnacci(n - 1) + Fibonnacci(n - 2);
}
int main()
{
int m;
cin >> m;
for (int i = 0; i < m; i++)
{
cout << Fibonnacci(i) << " ";
}
system("pause");
return 0;
}
Python版
def Fib(n:int):
if n<=1: return n
else: return Fib(n-1)+Fib(n-2)
if __name__=="__main__":
n=int(input())
for i in range(n):
print(Fib(i),end=' ')
总结
都是属于递归的运用,比较简单…