关于递归:
程序调用自己的编程技巧叫做递归。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义
或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小
的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。
例如:文中代码、Fibonacci数列求解、汉诺塔等
缺点:易发生StackOverFlow
关于递推:
递推算法是一种用若干步可重复的简运算(规律)来描述复杂问题的方法。递推是序列计算机中的一种常用算
法。它是按照一定的规律来计算序列中的每个项,通常是通过计算机前面的一些项来得出序列中的指定象的值。
关于迭代 :
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,
=====================================================
递归与递推的区别:
一、递归整体是分为两步的:1.向下递推直到限制条件到了。
2.回溯结果。
二、递推就是从初始态出发,不断改变自己的过程。
如:我想让1+2+4+...+64;
讲故事阶段:
Leo偷偷溜进电影院看电影(黑灯瞎火),然鹅并不知道自己在第几排,于是乎问一下前一排的观众Q,
Q也不高兴,直接找自己前一排的P.......问到坐在第一排观众A了,随后每一排的观众向后传递信息,
Leo最终得到排号b( ̄▽ ̄)d (可以自行判断)
TuJia笔试小题目:
func(int a){
if(a<2){
return 1;
}
return func(a-2)+func(a-1);
}
func(5) = ?
脑海里想象一下 Java栈结构——FILO:方法进栈-运算-出栈,出现方法调自身方法,那就屯在栈里。
每有一个叶子节点,返回1 ,
public class TuJia {
static int count = 0;
public static void main(String[] args){
System.out.println("结果为"+tt(5));
System.out.println("共计"+count+"次调用");
}
static public int tt(int n){
if(n<2){
count++;
return 1;
}
count++;
return tt(n-2)+tt(n-1);
}
}
结果为: