C语言进阶-第6讲:递归法问题求解(两数的最大公约数)
2017-11-06 16:56
281 查看
任务和代码:
/*
*All rights reserved
*文件名称:main.c
*作者: Osseyda
*完成日期:2017.11.6
*版本号:v2.
*
*问题描述:两数最大公约数的递归版(辗转相除法)
*递归思路:
有两整数a和b(a>b):
① a%b得余数c
② 若c=0,则b即为两数的最大公约数
③ 若c≠0,则a=b,b=c,再回去执行 ①
例如,求27和15的最大公约数的过程为:
27%15=12 15%12=3 12%3=0
3即为最大公约数
*/
#include <stdio.h>
int main(){
int a,b,g;
scanf("%d %d",&a,&b);
g=mygcd(a,b);
printf("最大公约数是:%d\n", g);
return 0;
}
int mygcd(int m,int n){
if(m < n){
int temp = m;
m = n;
n = temp; //n是较小的数
}
if(n == 0)
return m; //基准条件
return mygcd(n, m%n);
}
知识点总结:
分别用了辗转相除法和相减法用递归实现了求两数的最大公约数
没有像上一篇中可以直接列写递归方程,但可以写出递归思路
根据递归思路,先编写递归结束条件,再具体实现在函数里调用自身的代码
/*
*All rights reserved
*文件名称:main.c
*作者: Osseyda
*完成日期:2017.11.6
*版本号:v2.
*
*问题描述:两数最大公约数的递归版(辗转相除法)
*递归思路:
有两整数a和b(a>b):
① a%b得余数c
② 若c=0,则b即为两数的最大公约数
③ 若c≠0,则a=b,b=c,再回去执行 ①
例如,求27和15的最大公约数的过程为:
27%15=12 15%12=3 12%3=0
3即为最大公约数
*/
#include <stdio.h>
int main(){
int a,b,g;
scanf("%d %d",&a,&b);
g=mygcd(a,b);
printf("最大公约数是:%d\n", g);
return 0;
}
int mygcd(int m,int n){
if(m < n){
int temp = m;
m = n;
n = temp; //n是较小的数
}
if(n == 0)
return m; //基准条件
return mygcd(n, m%n);
}
/* *All rights reserved *文件名称:main.c *作者: Osseyda 完成日期:2017.11.6 *版本号:v2. * *问题描述:两数最大公约数的递归版(相减法) *递归思路: 有两整数a和b: ① 若a>b,则a=a-b ② 若a<b,则b=b-a ③ 若a=b,则a(或b)即为两数的最大公约数 ④ 若a≠b,则再回去执行① 例如,求27和15的最大公约数的过程为: 27-15=12(15>12) 15-12=3(12>3) 12-3=9(9>3) 9-3=6(6>3) 6-3=3(3==3) 因此,最大公约数是3 */ #include <stdio.h> int main(){ int a,b,g; scanf("%d %d",&a,&b); g=mygcd(a,b); printf("最大公约数是:%d\n", g); return 0; } int mygcd(int m,int n){ if(m==n) return m; else{ if(m>n) return mygcd(m-n,n); else return mygcd(m,n-m); } }
知识点总结:
分别用了辗转相除法和相减法用递归实现了求两数的最大公约数
没有像上一篇中可以直接列写递归方程,但可以写出递归思路
根据递归思路,先编写递归结束条件,再具体实现在函数里调用自身的代码
相关文章推荐
- C语言进阶-第6讲:递归法问题求解(易列写递归方程)
- C语言进阶-第6讲:递归法问题求解(递归求数组的最大值)
- C语言进阶-第22~23讲:问题求解的一般过程&数据结构及算法概述
- C语言及程序设计进阶例程-6 递归法问题求解
- C语言进阶-6讲: 递归法问题求解
- 最大子序列问题及其求解----C 语言学习
- 递归法求解迷宫问题
- 汉诺塔问题的C 语言求解分析
- perl语言编写模拟退火算法 求解TSP问题
- 用递归法:设计算法求解汉诺塔问题,并编程实现。 (1) Hanoi(汉诺)塔问题分析 这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C
- “八皇后”问题递归法求解
- 递归法求解 汉诺塔问题
- C语言课程设计-迷宫问题的求解
- 八皇后问题之递归法求解
- 八皇后问题递归法求解
- lua语言的闭包问题 求解
- 素数问题(Prime number problem)的求解 ---- C 语言学习
- 八皇后问题详细分析与解答(递归法解答,c#语言描述)
- 学习C/C++语言:递归求解hanoi汉诺塔问题
- java语言求解兔子问题代码分析