递归与非递归转换(栈知识应用)
来源:互联网 发布:股市数据分析 编辑:程序博客网 时间:2024/05/28 16:04
下面例题是一次作业中遇到的,很值得体味,与大家共享下。
递归代码:
long f(long m,long n){long sum;if(m==0) sum=n+1;else if(n==0) sum=f(m-1,1);else k=f(m-1,f(m,n-1));return sum;}
用递归来做很明了,当我们明白了递归所走的整个流程后,下面我们用栈来实现非递归的转换。
非递归代码:
long f(long m,long n){ listStack<long> k; //用链栈来实现 k.push(m); k.push(n); long sum; while(k.length()!=1) //栈中只有一个元素时退出循环 { n=k.pop(); //出栈 m=k.pop(); if(m==0) k.push(n+1); else if(n==0) { k.push(m-1); n=1; k.push(n); } else { k.push(m-1); k.push(m); k.push(n-1); } } sum=k.pop(); return sum;}
- 递归与非递归转换(栈知识应用)
- 递归与非递归转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 如何用栈实现递归与非递归的转换
- 关于“递归”与“非递归”的转换
- 关于“递归”与“非递归”的转换
- 递归与非递归及其相互转换
- 递归与非递归相互转换
- 递归与非递归及其相互转换
- 递归与非递归的转换
- IO包中的其他对象
- 你的团队会对所有代码进行代码评审吗?具体如何实施?如何评价代码评审的作用?
- windows环境变量
- SQL Server 复杂查询 子查询 分页查询 identity(1,1)自增 ——学习笔记
- 男人帮之程序员坚持语录
- 递归与非递归转换(栈知识应用)
- Servlet监听器
- Qt/Embedded data directory is not owned by user 0: /tmp/qtembedded-0
- EL表达式
- Ubuntu下搭建C/C++开发环境
- 绘图
- 一个老工程师给年轻人的十大忠告【转帖+感想】
- 会话跟踪
- WPF [调用线程无法访问此对象,因为另一个线程拥有该对象。] 解决方案