内容正文:
算法初步
以“求两个数的最大公约数”为例
解析法:3是否是6和9的公约数?
解析法:3是否是6和9的公约数?
已知海伦公式,其中,a、b、c分别为三角形的三条边长。利用海伦公式求三角形面积的算法属于( )
A.穷举法 B.排序法 C.解析法 D.查找法
枚举法:6和9的公约数有哪些?
枚举法:6和9的公约数有哪些?
水仙花数是三位整数:其各位数字立方各等于该数本身,如 153 = 1**3 + 5**3 + 3**3 ,如果要求出所有的水仙花数,下列算法最合适的是( )
A.枚举法 B.查找法 C.解析法 D.排序法
枚举法:6和9的最大公约数?
数学思路:辗转相除
9%6=3
6%3=0
答案:3
14%8=6
8%6=2
6%2=0
答案:2
6和9
14和8
迭代法:两个数的最大公约数?
9%6=3
6%3=0
答案:3
14%8=6
8%6=2
6%2=0
答案:2
6和9
14和8
迭代法:(辗转法)
不断地重复,且每一次迭代得到的结果会被用来作为下一次迭代的的初始值。
递归法:
递归是重复调用函数自身实现循环,迭代是函数内某段代码实现循环。
斐波那契在《计算之书》提出一个有趣的兔子问题:假设一对兔子每个月可以生出一对小兔子,一对兔子出生后第2个月就开始生小兔子,那么兔子的对数将如图所示:
斐波那契数列:数列的第一个数为 1,第二个数为 1,接下来每个数都等于前面2个数之和,即:1,1,2,3,5,8,13……现给出一个正整数N,求斐波那契数列中第 N个数是多少?
求 n!(n≤12),也就是1×2×3...×n1×2×3...×n。
挑战:尝试不使用循环语句(for、while)完成这个任务。
$$