Big_PixeL
@Big_PixeL

Как осуществить алгоритм поиска Фибоначчи?

Доброе время суток. Я много рылся по просторам интернета и не совсем понял одно.
Поиск с помощью Фибоначчи это как? Я сделал очень простенькую программу и я сперва подумал что это и есть тот самый поиск.. Но начал сомневаться да и запутался в конце.
Сама программа проста и работает, но по сути это всего числа Фибоначчи..
Тогда как сделать алгоритм поиска с помощью алгоритма Фибоначчи?

Для наглядности даже скрин прикрепил :)
5e9b967f3f26f886245641.jpeg

А это тем кому сложно понять мой вопрос. Это задание которое я не могу выполнить. Кстати я не прошу выполнить задания, а лишь хотелось бы узнать что это за алгоритмы поиска которые я не могу сделать да и в интернете нету примером. Если кому то по зубам это и сможет помочь я буду крайне благодарен!

Разработать программный модуль демонстрации сравнения работы алгоритмов поиска с помощью Фибоначчиева алгоритма и алгоритма по бору.

Спасибо за уделенное время этой теме!
  • Вопрос задан
  • 719 просмотров
Решения вопроса 3
john36allTa
@john36allTa
alien glow of a dirty mind
Оптимизированная версия поиска в обе стороны
using System;
public class FibonacciNumber{
	private byte index;
	private decimal number;
	public FibonacciNumber(int i){
		if (i <= 0)
			i = 0;
		this.index = (byte) i;
		this.number = i > 0 ? Fibonacci.getNumber(i) : 0;
	}
	public FibonacciNumber next(){
		return new FibonacciNumber(index+1);
	}
	public FibonacciNumber prev(){
		return new FibonacciNumber(index - 1);
	}
	public int Index {
		get {
			return (int) index;
		}
	}
	public decimal Number{
		get {
			return number;
		}
	}
}

public class Fibonacci
{
	private static double A = Math.Pow(5, 0.5);
	private static double B = (A + 1) / 2;
	private static double LNb = Math.Log(B);
	
	public static int getIndex(decimal number){
		return (int) Math.Round(Math.Log((double)((decimal) Fibonacci.A * number)) / Fibonacci.LNb);
	}
	public static decimal getNumber(int n){
		return (decimal) Math.Round( Math.Pow(Fibonacci.B, n) / Fibonacci.A );
	}
	public static FibonacciNumber find(decimal number){
		return new FibonacciNumber(Fibonacci.getIndex(number));
	}
}
public class Program
{
	public static void Main()
	{
		FibonacciNumber fib = Fibonacci.find(100000);
		Console.WriteLine(fib.Index);
		Console.WriteLine(fib.Number);
		Console.WriteLine(fib.next().Number);
	}
}
Ответ написан
mindtester
@mindtester Куратор тега C#
https://youtu.be/UtO6HIp1908?list=RDUtO6HIp1908
Eugene,
Я просто не пойму как реализовать. Как написать код и как оно должно все выглядить. Вот в чем беда.
возвращаемся к заданию
Разработать программный модуль демонстрации сравнения работы алгоритмов поиска с помощью Фибоначчиева алгоритма и алгоритма по бору.
вам надо выяснить что такое:
- поиск с помощью Фибоначчиева алгоритма
- поиск по бору
- реализовать оба алгоритма
- протестировать на показательном наборе входных данных
- что от вас хотят в качестве сравнения, ни кто тут протелепатировать не может. минимум это сравнение быстродействия по времени исполнения и/или по количеству итераций
- максимум, все это можно еще и визуализировать. как это может выглядеть можно посмотреть на визуализациях тех же алгоритмов сортировок. хотя скорее всего пункта выше вам хватит
ps
ни один из этих пунктов не может быть подсказан 2-3 предложениями и 5-10-15 строками кода. если не приложили собственных существенных усилий
pps
в частности основы WinForms точно надо освоить
https://docs.microsoft.com/ru-ru/dotnet/framework/...
https://metanit.com/sharp/windowsforms/1.1.php
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы