(define (factorial n)
(define (fac-times n acc)
(if (= n 0)
acc
(fac-times (- n 1) (* acc n))))
(if (< n 0)
(display "Wrong argument!")
(fac-times n 1)))
SortedList <,>
- это действительно карта, отсортированная по ключу, а не список. Возможно, плохое название. Но есть способы подражать тому, что вы хотите, в зависимости от ваших конкретных требований. Вы можете, например, инкапсулировать SortedList
и добавить / удалить что-то вроде:
// add
int count;
if(list.TryGetValue(value, out count)) list[value] = count+1;
else list[value] = 1;
В конечном итоге вы также можете использовать простой список ( List <>
) - это зависит от того, что вы делаете.
Отчасти я ожидаю, что привязка данных и т. д. затрудняет реализацию обычного списка, который сортируется немедленно - вам нужно реализовать много интерфейсов, чтобы получить это работает, так как обычно ожидается, что добавленный вами элемент останется в конце.
Я не уверен, соответствовать вашим требованиям. Но вы можете отсортировать обычный список. MSDN говорит об этом, но, очевидно, для этого требуется вызов sort.
Я пытался найти то же самое: в основном список, который остается упорядоченным по мере добавления в него элементов. Ближе всего я пока нашел SortedSet из Goletas.Collections, который использует реализацию AVL дерева:
http://www.goletas.com/solutions/collections/
Но этот класс все еще требует, чтобы каждый элемент в списке был уникальным (отсюда и "Set").
Возможно, этот класс можно модифицировать для поддержки неуникальных элементов.