【问题标题】:How to find the closest element in an array [closed]如何在数组中找到最近的元素[关闭]
【发布时间】:2018-01-29 04:51:42
【问题描述】:

我尝试寻找这个问题的答案,但运气不佳。基本上我被要求创建斐波那契代码,然后允许用户输入在序列中查找输入。如果它在序列中,那么它会显示什么索引。如果不是,则显示最接近的两个数字。

因此,如果用户输入 4,则最近的元素将是 3 和 5,而索引将是 4 和 5。

我基本上是在努力寻找最近的元素。我不确定该怎么做。 ****更新**** 所以我确实想通了谢谢你

【问题讨论】:

  • 我建议你从代码中退一步,用文字描述解决这个问题的步骤。例如,您可以从 1 开始。要求用户输入一个数字。 2. 生成第一个斐波那契数。那么第3步是什么?第4步?继续……
  • 我想创建一个斐波那契数组,然后对其进行二进制搜索会很好..当找不到完全匹配时,您可以返回相邻元素

标签: java arrays fibonacci


【解决方案1】:

1.将之前的斐波那契数存入一个缓冲区(可以用-1初始化)

2.在计算出每个新数字后更新缓冲区。

3.如果当前号码不等于新号码

3.检查数字是否大于缓冲区且小于新数字

3.A.1)如果是,那两个是离你最近的数字。

import java.util.Scanner; 

public class Fibonacci {

public static void main(String[] args) {

    int userInput;
    Fibonacci.fibonacciAlgor(5);

}

public static void fibonacciAlgor(int userInput)
{
    int i=0;
    int buffer=-1;
    int x=0,y=1;
    System.out.println("Input: " + userInput);
    while(i<1000000){
        if(x==userInput){
            System.out.println("Belongs to sequence: Yes "");
            break;
        }
        else{
            if(userInput>buffer&&userInput<x){
                System.out.println("Belongs to sequence: No ");
                System.out.println("Nearest Elements: " + buffer+","+x);
                break;
            }
        }

        buffer=x;
        int temp=y;
        y=x+y;
        x=temp;
        i++;
    }


}   

}

【讨论】:

  • 满意请采纳答案
猜你喜欢
  • 2016-12-28
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 2019-07-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多