迭代与递归的小尝试
来源:互联网 发布:淘宝自定义图片尺寸 编辑:程序博客网 时间:2024/06/05 10:13
递归:程序调用本身,也就是函数自己去调用自己
当我们在说一个过程是递归的时候,也就是这个过程在定义的时候直接或者间接的调用了该过程的本身。
迭代:根据变量的规则计算得出新的一个值,也就是A不断去调用B的过程,这和递归自己调用自己不同。
递归中一定有迭代,而迭代中不一定有递归。
同时递归调用会浪费资源,递归得越深,越容易引起堆栈的泄漏。也就是能用迭代的函数就利用迭代,少用递归函数。
下面是关于阶乘的代码
//迭代方法long funA(int p){ for(int i=1;i<=p;i++) { p=i*p; } return p;}//递归方法long fun(int p){if(p<=1) return 1;elsereturn p*fun(p-1);}
同样在对于斐波那契数列中
//迭代方法int Fib(int n){int a=1,b=0;int temp =0;for(int i=1;i<n;i++){temp=a;a=a+b;b=temp;}return a;}//递归方法int Fib2(int n){if(0==n)return 0;if(1==n)return 1;elsereturn Fib2(n-1)+Fib2(n-2);}
另外的类似斐波那契数列的一道题目:一个函数f(n),当n<=3时,f(n)=n;当n>3时,f(n)=f(n-1)+2f(n-2)+3f(n-3);
int f(int n){int a=3,b=2,c=1;int temp1,temp2;for(int i=4;i<=n;i++){temp1=a;temp2=b;a=a+2*b+3*c;b=temp1;c=temp2;}return a;}//递归方法int f2(int n){if(n<=3)return n;elsereturn (f2(n-1)+2*f2(n-2)+3*f2(n-3)); }
在用迭代找关系的时候可以列出f(4),f(5),用数学中的不完全归纳法找出变量的规则,但是要注意系数的问题。也就是应该检查一下关系式的正确与否。
- 迭代与递归的小尝试
- 关于算法中递归与迭代的小感想
- 递归和迭代的小例子
- 迭代与递归
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- 递归与迭代
- MediaStore图像存储(笔记)
- Android JNI 技术简介
- 前端开发工程师如何在2013年里提升自己
- java 序列化 Serializable接口
- 每个程序员都应该了解的“虚拟内存”知识(Memory part 3: Virtual Memory)
- 迭代与递归的小尝试
- android工程导入多个三方jar包 android.mk写法
- 开始记录博客
- hadoop常见错误总结
- c++多态
- javaweb项目部署文件
- vs2010使用
- 某系统性能测试案例
- 找出数组中的第二大数字