`
徐风子
  • 浏览: 37502 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

求最大公约数的递归算法

阅读更多

看 《programing in scala 》里面的例程里面有一个求最大公约数的函数,算法真简洁呀。(以前小学的时候咋不知道还可以这样求公因子呢)

 

 

def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b)

 

翻译成java语言是:

 

int gcd(int a, int b) {

  if(b == 0) {

    return a;

  }

  else {

    return gcd(b, a % b)

  }

}

分享到:
评论
2 楼 徐风子 2009-08-31  
alanwu 写道
递归终于可以浮出水面了,
大学学编程的时候,老师拼命打压递归,说递归性能差。
现在好了,有Scala编译器优化,可以尽量用递归了。

函数式编程,在外国学界都已经流行几十年了。我们的大学比人家差了多少个等级呀。
1 楼 alanwu 2009-08-24  
递归终于可以浮出水面了,
大学学编程的时候,老师拼命打压递归,说递归性能差。

现在好了,有Scala编译器优化,可以尽量用递归了。

相关推荐

    用递归算法实现两个整数最大公约数的计算

    在本文中,我们将深入探讨如何利用递归算法来计算两个整数的最大公约数(Greatest Common Divisor,简称GCD),并基于给定的C++源代码进行分析。 ### 递归算法概述 递归算法是一种函数调用自身的算法设计策略,其...

    Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例

    在计算机编程中,特别是在使用Python语言进行开发时,经常需要对两个数值进行最大公约数(GCD)和最小公倍数(LCM)的计算。最大公约数是指两个或多个整数共有约数中最大的一个,而最小公倍数是指能被两个或多个整数...

    最大公约数的递归解法cpp

    最大公约数的递归解法,这是一个cpp程序,运行正常,是求输入的2个数的最大公约数的递归算法

    c++代码用递归法求最大公约数

    这个是用递归法来写最大公约数,当然原算法还是欧几里得算法;只不过代码比较简洁

    最大公约数算法

    欧几里得算法是求最大公约数最古老的算法,由古希腊数学家欧几里得提出。该算法基于以下定理:对于任意两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c与b之间的最大公约数。通过不断迭代这一过程,直到...

    论文研究-求最大公约数、模乘逆元或一次同余方程一般解的统一递归算法(概要) .pdf

    求最大公约数、模乘逆元或一次同余方程一般解的统一递归算法(概要),苏盛辉,王其文,区别于只能求取模乘逆元和最大公约数而不能直接解一次同余方程的扩展欧几里德算法,作者设计了一个被称为REESSE0的递归算法。...

    欧几里德算法求最大公约数——C++代码

    欧几里得算法,也称为辗转相除法,是计算两个正整数最大公约数(Greatest Common Divisor, GCD)的一种经典方法。该算法基于以下原理:两个正整数a和b(a>b)的最大公约数等于a除以b的余数c和b之间的最大公约数。...

    利用三种算法求最大公约数

    本文将深入探讨三种不同的方法来计算两个整数的最大公约数:分解质因数法、连续整除法以及欧几里得算法,并结合提供的代码文件进行解析。 1. **分解质因数法**: 分解质因数法是通过将两个数分别分解为质因数,...

    递归算法求两个数的最大公约数

    ### 递归算法求两个数的最大公约数 #### 1. 递归方法解析 **递归算法**是一种解决问题的方法,其中函数通过调用自身来解决问题。递归算法的关键在于找到一个基本结束条件(base case),以及如何将问题分解成更小...

    求最大公约数最小公倍数的3种算法的流程图

    本主题主要关注求最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)的三种常见算法,通过流程图的方式进行阐述。下面我们将详细探讨这五种算法及其流程。 1. 辗转相除法...

    C语言求最大公约数和最小公倍数算法总结

    C语言求最大公约数和最小公倍数算法总结 C语言中求最大公约数和最小公倍数的各种算法总结,包括辗转相除法和穷举法等。辗转相除法又名欧几里德法,是一种经典的算法,用于计算两个正整数的最大公约数和最小公倍数。...

    求最大公约数的三种算法

    文档中包含了分别用欧几里德算法, 穷举算法, 递归算法求最大公约数的方法, 并包含了测试函数, 测试数据. 测试数据选择了斐波那契数从1开始的19组相邻的数据. 实验中, 由于运算时间很短, 故对时间进行放大,即:对于每...

    abap简单递归算法

    ### ABAP简单递归算法解析 #### 一、引言 ABAP(Advanced Business Application Programming)是一种用于SAP系统的编程语言。它不仅支持传统的过程化编程,还支持面向对象编程和Web开发。本文将深入探讨一个ABAP中...

    如何用c语言求最大公约数和最小公倍数

    该算法基于这样一个事实:如果`a`和`b`是两个正整数,并且`a > b`,那么`a`和`b`的最大公约数等于`b`和`a mod b`的最大公约数。 #### 实现示例 下面是一个使用递归方式实现的GCD函数: ```c #include // 定义一...

    java试验,求最大公约数两种算法实现、

    在Java编程语言中,求最大公约数(Greatest Common Divisor, GCD)是一项常见的算法任务,它在数学和计算机科学中有广泛的应用。本实验主要探讨两种不同的算法来实现这个功能:欧几里得算法(Euclidean Algorithm)...

    算法基础与递归-百积问题-递归求公约数-求阶乘-斐波那契数列

    * 通过递归和非递归方法实现最大公约数的计算 * 通过递归和非递归方法实现阶乘的计算 * 实现斐波那契数列的计算 * 实现汉诺塔问题的解决 四、代码实现 下面是实验的代码实现: 1. 汉诺塔问题的解决 ```c void ...

    算法_用欧几里得算法求最大公因数_

    扩展欧几里得算法(Extended Euclidean Algorithm)不仅求出最大公因数,还能同时得到两个数的贝祖等式解,即存在整数x和y使得ax + by = gcd(a, b)。这对于计算模逆、线性同余方程的解等问题非常有用。 扩展...

    Python基于递归算法求最小公倍数和最大公约数示例

    本文实例讲述了Python基于递归算法求最小公倍数和最大公约数。分享给大家供大家参考,具体如下: # 最小公倍数 def lcm(a, b, c=1): if a * c % b != 0: return lcm(a, b, c+1) else: return a*c test_cases = ...

    例3-16求最大公约数.zip

    5. "例3-16求最大公约数":这个可能是源代码文件,可能用C++或其他语言编写,实现了最大公约数的算法。 为了更好地理解这个例子,我们需要查看源代码文件,了解它是如何实现欧几里得算法或者其他方法来找到最大公...

Global site tag (gtag.js) - Google Analytics