![]() |
0 Всего найдено: 15
linkoln78
Сообщение
21/12/2011 11:47
Копия темы
Как написать рекурсивную функцию для n-го числа Фибоначчи. Заранее спасибо Вот так вроде она выглядит на C++ int fib_rec(int n) { if (n==1)or(n==2) return 1; return fib_rec(n-1)+fib_rec(n-2); } Как это написать на языке C#
grunger_net
Сообщение
21/12/2011 11:52
Копия темы
ряд Фибоначчи это когда число следующего сегмента равен сумме двух предыдущих? могу перепутать.. ну так вот ты из одного числа сумму двух предыдущих не получишь. а значит надо как минимум в сигнатуру метода добавлять два аргумента. если я правильно понял, конечно. ЗЫ.. оооочень странный код :DD
linkoln78
Сообщение
21/12/2011 11:56
Копия темы
Да, вы все правильно поняли ТОлько что именно мне нужно исправить, и что-бы оно работало на языке C#
grunger_net
Сообщение
21/12/2011 12:00
Копия темы
Нужно исправить всё :) Сначала на листочке: 0, 1, 1, 2, 3, 5, 8... Для получения следующего нужно в метод передавать два предыдущих... т.е. 5 и 8.. передаем, метод считает, что это 13... спрашиваем у метода уже 8 и 13... получаем 21... потом 13 и 21.. и т.д. Алгоритм слишком простой, чтобы я открывал студию)
linkoln78
Сообщение
21/12/2011 12:03
Копия темы
Вы сможете помочь, мне это очень нужно сделать сегодня...?
grunger_net
Сообщение
21/12/2011 12:25
Копия темы
я вам уже очень помог :) осталось дело за малым. у меня под рукой сейчас нет студии. я пью кофу на кухне и смотрю симпсонов)) еще есть вопрос.. ряд Ф строится от s1, s2? как вариант, можно получить ряд Ф от числа N.. путем.. расчета Ф до N 1 и внесения в глобальное хранилище данных. Оттуда и можно будет получать данные нужные для построения ряда дальше. Это так, совет.
RMB
Сообщение
21/12/2011 12:31
Копия темы
вот мой вариант на JAVA, не совсем корректный, но как пример public static void main(String[] args) { // TODO Auto-generated method stub int n = 20; System.out.print("0 1"); fibon(0, 1, n); } public static void fibon(int num1, int num2, int n){ n--; if(n > 0){ int num = num1 + num2; System.out.print(" " + num); fibon(num2, num, n); } }
koz128901
Сообщение
21/12/2011 12:42
Копия темы
Я бы сказал что код недостаточно универсален Нужно так: import System; import CSharp; namespace Fibonacci { class FibonacciClass { static dynamic Fibonacci (dynamic x) { Console.WriteLine ("x = ", x); if (x <= 1) return x; return Fibonacci (x-1) + Fibonacci (x-2); } static void Main( ) { Console.WriteLine ("Fibonacci no. = ", FibonacciClass.Fibonacci (5)); Console.ReadKey(); } } }
grunger_net
Сообщение
21/12/2011 12:49
Копия темы
с 4.0 может не разобраться товарищ. и вы, наверное, не знаете.. что такое ряд Ф :) как ремейк того, что написал ТС пойдет.. но это ничего общего с Фибоначчи не имеет.
Butterfly88
Сообщение
21/12/2011 12:49
Копия темы
Извините, что вмешиваюсь в ваш разговор, джентельмены. Я, конечно, понимаю, что это скорее учебная задача, но вообще её лучше, проще и правильнее решать НЕ через рекурсию.
grunger_net
Сообщение
21/12/2011 12:51
Копия темы
Скорее всего, просто проходят рекурсию :) Как сам факт. Исходя из названия всего треда.
koz128901
Сообщение
21/12/2011 12:53
Копия темы
Я знаю. ТС просил просто вариант его функции на C# 4.0 вот он и есть ;)
koz128901
Сообщение
21/12/2011 12:53
Копия темы
0
Через регистры накопители было-бы НАМНОГО лучше, но ТС ОЧЕНЬ нужна рекурсия :( |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |