Fibonacci数列最小步数

1.题目:


2.解析:

让a,b,c回滚构造斐波那契数列 :a=b, b=c, c=a+b;

输入的数 n小于c,在b,c之间,只要 n+1 或者 n-1(贪心思想: n只加一或者只减一

最后再求n-b,c-n的最小值,获得最小步数

代码:

java 复制代码
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int a = 0, b = 1,c = 1;
        int ret = 0;
        while(n > c){
            a=b;
            b=c;
            c=a+b;
            if(n > b && n < c) {
                ret = Math.min(n-b,c-n);
            }
        }

        System.out.print(ret);        
    }
}
相关推荐
未来之窗软件服务13 小时前
计算机考试-快速排序—东方仙盟
数据结构·算法·排序算法·仙盟创梦ide·东方仙盟
小龙报14 小时前
【优选算法】1. 水果成蓝 2.找到字符串中所有字母的异位词
java·c语言·数据结构·数据库·c++·redis·算法
txzrxz14 小时前
数论:排列数、组合数、费马小定理、逆元、同余定理
c++·算法·数论·组合数·费马小定理·逆元·排列数
xqqxqxxq14 小时前
LeetCode Hot100 双指针专项题解笔记
笔记·算法·leetcode
闪电悠米15 小时前
力扣hot100-54.螺旋矩阵-模拟边界控制详解
算法·leetcode·矩阵
变量未定义~15 小时前
虚拟节点-星石传送阵(4星)、强连通分量
数据结构·算法
IT方大同15 小时前
C语言分支与循环语句
c语言·开发语言·算法
待磨的钝刨16 小时前
深入理解主成分分析(PCA)
人工智能·线性代数·算法·机器学习
wWYy.17 小时前
算法:合并两个有序数组
数据结构·算法
geovindu17 小时前
java: Backtracking Algorithm
java·开发语言·windows·后端·算法·回溯算法