已知: i=1,x=1/2 i=2,x=1/4 i=3,x=3/4 i=4,x=1/8 i=5,x=3/8 i=6,x=5/8 i=7,x=7/8 i=8,x=

91 阅读1分钟
已知:
i=1,x=1/2
i=2,x=1/4
i=3,x=3/4
i=4,x=1/8
i=5,x=3/8
i=6,x=5/8
i=7,x=7/8
i=8,x=1/16
找出规律,并实现方法

找规律:
1、根据输入值规律 
根据输入值找到2^n < i < 2^m

2、分子规律
1 = 2 * 0 + 1
1 = 2 * 0 + 1
3 = 2 * 1 + 1
1 = 2 * 0 + 1
其规律为:
分子 = 2*(i%(2^n)) + 1

3、分母规律
2 = 2^1
4 = 2^2
8 = 2^3
16 = 2^4
其规律为:
2^m

Swift 代码实现

func pattern(i: Int) -> String {
    var n = 0
    var m = 2
    for j in 0...i {
        if i >= 2<<j {
            n = j
        } else {
            m = j
            break
        }
    }
    let molecule = 2*(i%(2<<n)) + 1
    let denominator = 2<<m
    let str = "\(molecule)/\(denominator)"
    return str
}