引用
简单计算两个非负整数a*b的算法
1.递归方式:a*b=b+(a-1)*b 表示a个b相加,算法如下:
FUNC mul1(a,b:integer):integer:
IF a=0 THEN RETURN(0)
ELSE RETURN(b+mul1(a-1,b))
ENDF;{mul1}
2.迭代方式:a*b=a个b之和
FUNC mul2(a,b:integer):
integer;
z:=0;
FOR i:=1TO a DO
z:=z+b;
RETURN(z)
ENDF;{mul2}
引用
java代码实现
public class RecursionTest {
/**
* @param args
*/
//递归方式
public int mul1(int a,int b){
if (a==0)
return 0;
else
return b+mul1(a-1,b);
}
//迭代方式
public int mul2(int a,int b){
int z=0;
for(int i=1;i<=a;i++){
z+=b;
}
return z;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
RecursionTest tt = new RecursionTest();
int s1=tt.mul1(15, 15);
System.out.println("递归方式s1="+s1);
int s2=tt.mul2(15, 15);
System.out.println("迭代过程s2="+s2);
}
}
分享到:
相关推荐
Hanoi递归过程分析图,利用展开法对hanoi的执行过程进行了分析!
计算机等级VB语言中的递归过程是编程中的一个重要概念,它主要涉及到函数或子过程的自我调用。递归是通过自身调用来解决复杂问题的一种方法,它的基础在于将大问题分解为相同或相似的小问题来处理。在VB中,递归可以...
递归过程与递归工作栈.pptx
3. **算法设计**:为每个非终结符号创建一个递归过程,并根据其产生式编写对应的代码结构。如果遇到终结符号,比较与当前字符,匹配则继续,否则报错;如果遇到非终结符号,调用相应函数处理。 **三、实验设计思想...
为G的每个非终结符号U构造一个递归过程,不妨命名为U。 U的产生式的右边指出这个过程的代码结构: (1)若是终结符号,则和向前看符号对照, 若匹配则向前进一个符号;否则出错。 (2)若是非终结符号,则调用与此非终结...
第8课变量过程与递归过程[归纳].pdf
算法讲解038【必备】常见经典递归过程解析
1. **递归基**:即递归查询的起点,通常是一个简单的查询语句,用于初始化递归过程。 2. **递归步**:递归过程中的核心部分,通过与递归基连接的方式逐步扩展结果集。 3. **连接条件**:用于确定递归步中如何与递归...
用先序递归过程建立二叉树 (存储结构:二叉链表) 输入数据按先序遍历所得序列输入,当某结点左子树或右子树为空时,输入‘*’号
VB6.0 使用递归过程实现阶乘运算 Function F(n As Integer) As Single If n > 1 And n F = n * F(n - 1) Else F = 1 End If End Function Private Sub Command1_Click() Text2.Text = F(Val(Text...
递归实现的关键在于理解这个过程如何逐层展开。每次调用`A(m, n)`时,如果`m`或`n`不满足基础情况,就会继续调用自身,直到达到基础情况为止。这种递归深度可以迅速增长,使得阿克曼函数在较高的参数值上计算起来...
这是程序的起点,也是递归过程的开始。 1. 初始调用`f(1234)`时,程序会打印出1234的最低位数字4。 2. 接下来,程序执行`f(1234/10)`,也就是`f(123)`。同样地,它会打印出4,并递归地调用`f(123)`。 3. 在`f(123)`...
递归图和递归分析是理解递归过程和优化算法效率的重要工具。本文将深入探讨这些概念,并结合MATLAB环境,阐述如何利用它们进行复杂的系统分析。 首先,CRP(可能是"Context-Reuse Partitioning"的缩写)在这里可能...
- 非递归版本:使用栈来模拟递归过程。首先将根节点压入栈,然后进入循环,每次弹出栈顶节点并访问,如果其有左子节点则将其压入栈,直到栈为空。 2. **中序遍历**(左-根-右): - 递归版本:首先递归遍历左子树...
非递归实现通常使用栈来模拟递归过程。首先,对整个数组进行一次分区操作,然后根据k的位置将搜索范围缩小到栈中。当栈不为空时,取出栈顶元素,再次进行分区,根据新的k值调整搜索范围,并将新的子区间压入栈中。这...
理解递归的概念、如何定义递归基和递归步骤,以及如何处理递归过程中可能出现的复杂性,是掌握递归算法的关键。在实际编程中,递归可以帮助我们解决许多看似复杂的问题,提高代码的简洁性和可读性。
为了解决这个问题,你可以使用非递归方法,即栈来模拟递归过程。这种方法不直接使用函数调用来存储和恢复状态,而是通过数据结构(如栈)来手动管理这些状态。在C语言中,你可以创建一个栈结构,用于保存中间计算的...
- **手动模拟递归过程**:使用显式的数据结构(如栈)来保存递归调用的上下文,从而模拟递归调用的行为。 总之,递归算法是程序设计中一种非常强大的技术,它不仅可以帮助我们更简洁地解决问题,而且还能提高代码的...
递归调用是函数内部调用自身的过程,而基本情况是递归过程的终止条件,当满足这个条件时,函数不再调用自身,而是直接返回一个值。 在C语言中,递归函数的声明和普通函数类似,但需要注意的是,每次递归调用都会...