码迷,mamicode.com
首页 > 其他好文 > 详细

埃及分数式

时间:2019-11-08 23:58:47      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:一个   问题   str   单位   示例   else   public   return   class   

问题描述

分子是1的分数,叫做单位分数.古代埃及人在进行分数运算时,只使用分子是1的分数,依次这种分数也叫埃及分数式,或者叫单分子分数.
要求随便输入一个真分数,将该分数分解为埃及分数式,如 3/7 = 1/3 + 1/11 + 1/231.

算法思路

  • 埃及分数式式"不定长"的问题,这种不好循环,所以采用递归的思路
  1. 对于一个真分数a/b,找到最接近的1/k
  2. 如果b % a == 0 => k = b/a
    如果b % a != 0 => k = b/a + 1

代码示例

Python

# 递归思路 => 具体个数是不知道的

def fun(a, b):
    k = int(b / a)
    if b % a == 0:
        res = "1/%s" % k
    else:
        k += 1
        res = "1/%s + %s" % (k, fun(a * k - b, b * k))
    return res

print(fun(3, 8))

Java


// 埃及分数式 => 递归
public class 埃及分数式 {

    // a: 分子 b: 分母
    static String fun(int a, int b) {
        String res = "";
        int k = b / a;
        if (b % a == 0) {
            res += "1/"+k;
        }else{
            k++;
            res += "1/"+k+" + "+fun(a * k -b,b*k);
        }
        return res;
    }

    public static void main(String[] args) {
        System.out.println(fun(3,7));
    }

}

埃及分数式

标签:一个   问题   str   单位   示例   else   public   return   class   

原文地址:https://www.cnblogs.com/Rowry/p/11823786.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!