Advertisement
Graf_Rav

Untitled

Feb 12th, 2019
238
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.48 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. using DoublyLinkedList;
  8.  
  9. namespace ConsoleApp11 {
  10. public static class FareySequence {
  11. public static int a;
  12.  
  13. public static IEnumerable<Tuple<int, int>> Farey(int n) {
  14. //DoublyLinkedList<Tuple<int, int>> list = new DoublyLinkedList<Tuple<int, int>>();
  15. LinkedList<Tuple<int, int>> list = new LinkedList<Tuple<int, int>>();
  16.  
  17. list.AddFirst(Tuple.Create(0, 1));
  18. list.AddLast(Tuple.Create(1, 1));
  19. ModifyList(n, list, list.First);
  20. return list;
  21. }
  22. //рекурсивный метод, который добавляет новый элемент после prevNode, если добавление этого элемента законно, далее вызывает себя
  23. //для prevNode и нового узла. выход из рекурсии, когда добавление элемента невозможно, т.е. при знаменателе большем n
  24. static void ModifyList(int n, LinkedList<Tuple<int, int>> list, LinkedListNode<Tuple<int, int>> prevNode) {
  25. if ((prevNode.Value.Item2 + prevNode.Next.Value.Item2) <= n) {
  26. /*list.AddAfter(prevNode, Tuple.Create(
  27. prevNode.Value.Item1 + prevNode.Next.Value.Item1,
  28. prevNode.Value.Item2 + prevNode.Next.Value.Item2
  29. ));*/
  30. a++;
  31. var next = prevNode.Next;
  32. ModifyList(n, list, prevNode);
  33. ModifyList(n, list, next);
  34. }
  35. }
  36. }
  37. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement