微软笔试题-Greatest Common Divisor(non-recursive version)请赐教

kernelkoder 2015-04-10 08:06:38
Greatest Common Divisor
For two positive integers m and n their greatest common divisor (gcd) is defined as a greatest integer dividing both of them. For instance
gcd(42, 54) = 6
The following recursive function calculates the gcd.
int GCD(int m, int n)
{
int rem = m % n;
return (rem == 0) ? n : GCD(n, rem);
}
The check to see if m and n are positive has been omitted for clarity.
Write a non-recursive version of this function.
...全文
424 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
RiqueZhang 2015-10-09
  • 打赏
  • 举报
回复

int gcd(int m, int n)
{
    while (0 != n) {
        int r = m % n;
        m = n;
        n = r;
    }
    return m;
}
li_x1979 2015-05-06
  • 打赏
  • 举报
回复
int gcd(int m,int n) { while (true) { if (n == 0) return m; else m = m % n; if (m == 0) return n; else n = n % m; } }
  • 打赏
  • 举报
回复
While (rem=m%n)!=0 n=rem m=n return n 楼主,你这个内核程序员给出的微软面试题貌似都很简单啊!
FancyMouse 2015-04-11
  • 打赏
  • 举报
回复
这不就是尾递归转非递归么

33,022

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧