递归--练习3--noi7592求最大公约数问题

一、心得

两个低级错误:
1. ll setMax(ll &m,ll &n)中无引用,结果只传值,没传地址
2. return f(n,m%n);这句话忘记写return了

//保证结果能够一层层的返回

二、题目

7592:求最大公约数问题

总时间限制: 
1000ms

内存限制: 
65536kB
描述

给定两个正整数,求它们的最大公约数。

输入
输入一行,包含两个正整数(<1,000,000,000)。
输出
输出一个正整数,即这两个正整数的最大公约数。
样例输入
6 9
样例输出
3
提示
求最大公约数可以使用辗转相除法:
假设a > b > 0,那么a和b的最大公约数等于b和a%b的最大公约数,然后把b和a%b作为新一轮的输入。
由于这个过程会一直递减,直到a%b等于0的时候,b的值就是所要求的最大公约数。
比如:
9和6的最大公约数等于6和9%6=3的最大公约数。
由于6%3==0,所以最大公约数为3。

三、AC代码

 /*
noi7592求最大公约数问题
递推表达式:
f(m,n)=f(n,m%n)
边界条件
n==0时,m就是最大公约数
*/
/*
两个低级错误:
1. ll setMax(ll &m,ll &n)中无引用,结果只传值,没传地址
2. return f(n,m%n);这句话忘记返回了
*/
#include <iostream>
#include <cstdio>
#define ll long long
using namespace std;
//必须保证m>n
ll f(ll m,ll n){
if(==n) return m;
else{
21 return f(n,m%n);
}
}
//必须保证m>n
25 ll setMax(ll &m,ll &n){
if(n>m){
ll temp=n;
n=m;
m=temp;
}
}
int main(){
//freopen("in.txt","r",stdin);
ll m,n;
cin>>m>>n;
setMax(m,n);
ll ans=f(m,n);
cout<<ans<<endl;
return ;
}

最新文章

  1. 适合WebApi的简单的C#状态机实现
  2. git diff获取差异文件中文乱码的解决办法
  3. Struts2-tomcat报错:There is no Action mapped for namespace / and action
  4. [USACO2002][poj1946]Cow Cycling(dp)
  5. jquery ui tab标签
  6. ADB工具 获取ROOT权限及复制文件方法
  7. 浅谈IT认识
  8. java学习之函数
  9. 距离顶部估计像素,显示div!
  10. CSF 中的应用程序请求路由
  11. WPF开发进阶 - Fody/PropertyChanged(一)
  12. Notification的基本用法以及使用RemoteView实现自定义布局
  13. Rosenblatt感知器
  14. 基于Struts+Hibernate开发过程中遇到的错误
  15. log4j日志的配置
  16. 5. Scala函数式编程的基础
  17. python转换图片格式
  18. CentOS7利用systemctl添加自定义系统服务
  19. 腾讯tOS死亡或注定,为何国内无自主ROM?
  20. javascript 获取视口的高度和宽度

热门文章

  1. Common Subsequence 最大公共子序列问题
  2. [面经] 南京SAP面试(下)
  3. &#39;Settings&#39; object has no attribute &#39;TEMPLATE_DEBUG&#39; 的解决方法
  4. C++程序风格的思考
  5. MVC学习之简单的CRUD
  6. Oracle管理监控之使用utl_mail自动邮件报警配置
  7. Why Choose Jetty?
  8. Python开发【整理笔记】
  9. 基于Sql Server 2008的分布式数据库的实践
  10. [World Wind学习]21.影像切割