`
moita2008
  • 浏览: 8300 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

递归过程

阅读更多
引用
简单计算两个非负整数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);
	}

}

1
1
分享到:
评论

相关推荐

    Hanoi递归过程分析图

    Hanoi递归过程分析图,利用展开法对hanoi的执行过程进行了分析!

    2020年计算机等级VB语言核心知识点:递归过程.docx

    计算机等级VB语言中的递归过程是编程中的一个重要概念,它主要涉及到函数或子过程的自我调用。递归是通过自身调用来解决复杂问题的一种方法,它的基础在于将大问题分解为相同或相似的小问题来处理。在VB中,递归可以...

    递归过程与递归工作栈.pptx

    递归过程与递归工作栈.pptx

    编译原理递归下降实验和报告

    3. **算法设计**:为每个非终结符号创建一个递归过程,并根据其产生式编写对应的代码结构。如果遇到终结符号,比较与当前字符,匹配则继续,否则报错;如果遇到非终结符号,调用相应函数处理。 **三、实验设计思想...

    编译原理——语法分析器(递归下降分析法 )

    为G的每个非终结符号U构造一个递归过程,不妨命名为U。 U的产生式的右边指出这个过程的代码结构: (1)若是终结符号,则和向前看符号对照, 若匹配则向前进一个符号;否则出错。 (2)若是非终结符号,则调用与此非终结...

    第8课变量过程与递归过程[归纳].pdf

    第8课变量过程与递归过程[归纳].pdf

    算法讲解038【必备】常见经典递归过程解析.pptx

    算法讲解038【必备】常见经典递归过程解析

    存储过程递归查询

    1. **递归基**:即递归查询的起点,通常是一个简单的查询语句,用于初始化递归过程。 2. **递归步**:递归过程中的核心部分,通过与递归基连接的方式逐步扩展结果集。 3. **连接条件**:用于确定递归步中如何与递归...

    先序递归建立二叉树

    用先序递归过程建立二叉树 (存储结构:二叉链表) 输入数据按先序遍历所得序列输入,当某结点左子树或右子树为空时,输入‘*’号

    VB6.0 使用递归过程实现阶乘运算.rar

    VB6.0 使用递归过程实现阶乘运算  Function F(n As Integer) As Single  If n &gt; 1 And n  F = n * F(n - 1)  Else  F = 1  End If  End Function  Private Sub Command1_Click()  Text2.Text = F(Val(Text...

    ackermann函数的递归实现和非递归实现

    递归实现的关键在于理解这个过程如何逐层展开。每次调用`A(m, n)`时,如果`m`或`n`不满足基础情况,就会继续调用自身,直到达到基础情况为止。这种递归深度可以迅速增长,使得阿克曼函数在较高的参数值上计算起来...

    读懂C++递归程序

    这是程序的起点,也是递归过程的开始。 1. 初始调用`f(1234)`时,程序会打印出1234的最低位数字4。 2. 接下来,程序执行`f(1234/10)`,也就是`f(123)`。同样地,它会打印出4,并递归地调用`f(123)`。 3. 在`f(123)`...

    CRP.zip_CRP_CRP递归图_matlab 递归图_递归 MATLAB_递归分析

    递归图和递归分析是理解递归过程和优化算法效率的重要工具。本文将深入探讨这些概念,并结合MATLAB环境,阐述如何利用它们进行复杂的系统分析。 首先,CRP(可能是"Context-Reuse Partitioning"的缩写)在这里可能...

    数据结构二叉树遍历递归,非递归

    - 非递归版本:使用栈来模拟递归过程。首先将根节点压入栈,然后进入循环,每次弹出栈顶节点并访问,如果其有左子节点则将其压入栈,直到栈为空。 2. **中序遍历**(左-根-右): - 递归版本:首先递归遍历左子树...

    快速选择非递归与递归算法实现

    非递归实现通常使用栈来模拟递归过程。首先,对整个数组进行一次分区操作,然后根据k的位置将搜索范围缩小到栈中。当栈不为空时,取出栈顶元素,再次进行分区,根据新的k值调整搜索范围,并将新的子区间压入栈中。这...

    递归算法的详解,各种常见递归算法

    理解递归的概念、如何定义递归基和递归步骤,以及如何处理递归过程中可能出现的复杂性,是掌握递归算法的关键。在实际编程中,递归可以帮助我们解决许多看似复杂的问题,提高代码的简洁性和可读性。

    阿克曼函数 c程序 递归与非递归算法的综合

    为了解决这个问题,你可以使用非递归方法,即栈来模拟递归过程。这种方法不直接使用函数调用来存储和恢复状态,而是通过数据结构(如栈)来手动管理这些状态。在C语言中,你可以创建一个栈结构,用于保存中间计算的...

    程序设计中递归算法

    - **手动模拟递归过程**:使用显式的数据结构(如栈)来保存递归调用的上下文,从而模拟递归调用的行为。 总之,递归算法是程序设计中一种非常强大的技术,它不仅可以帮助我们更简洁地解决问题,而且还能提高代码的...

    递归函数 递归排序法

    递归调用是函数内部调用自身的过程,而基本情况是递归过程的终止条件,当满足这个条件时,函数不再调用自身,而是直接返回一个值。 在C语言中,递归函数的声明和普通函数类似,但需要注意的是,每次递归调用都会...

Global site tag (gtag.js) - Google Analytics