Поиск:

Ответ в темуСоздание новой темы Создание опроса
> F# - дерево, Обход дерева на F# 
:(
    Опции темы
polakrez
Дата 17.12.2011, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 17.12.2011

Репутация: нет
Всего: нет



Здравствуйте!

Имеется такое задание:
Определить число вершин дерева, степень которых совпадает со значением элемента.

Начало стандартное:

open System

type 'T tree =
    Leaf of 'T
    | Node of 'T*('T tree list)


let treee = Node(3,[Node(2,[Leaf(0)]);Node(3,[Leaf(6);Leaf(7)]);Leaf(4)])

let rec iter f = function
    Leaf(T) -> f T
    | Node(T,L) -> (f T; for t in L do iter f t done)

let iterh f =
    let rec itr n = function
        Leaf(T) -> f n T
        | Node(T,L) -> (f n T; for t in L do itr (n+1) t done) in
    itr 0

Далее:

let cou = 0
let count tr = 
    match tr with
    Leaf(T) -> match T with 
                0 -> (*acc cou*) printf "aa"
    | Node(T,L) -> match (T - List.length L) with
                    0 -> (*acc cou*) printf "aa"

let rec summT tree =
    match tree with
    Leaf(T) -> count Leaf(T)
    | Node(T,L) -> (count Node(T,L); for t in L do summT t done)

Этот цикл for не работает из-за несоответствия типов.

Как решить данную проблему? Как и где сделать цикл?

Буду благодарна за ответы.
PM MAIL   Вверх
k0rvin
Дата 20.12.2011, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: нет
Всего: 5



попробуйте прописать типы функций явно, тогда все станет понятней


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума «Функциональные языки: общие вопросы»
Void
  • Пожалуйста, создавайте темы с содержательными названиями. Если у Вас вопрос по конкретному языку, укажите его в заголовке, например: «[Haskell] Как использовать монаду State».
  • Уважаемые учащиеся, здесь всегда рады помочь Вам, но не делать за Вас вашу работу. У вас гораздо больше шансов получить помощь, если Вы приложите усилия и поделитесь с нами проблемами и результатами. В противном случае добро пожаловать в раздел Центр Помощи.
  • Получив ответ на интересующий Вас вопрос, не забудьте пометить его как решённый.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Функциональные языки: общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0791 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.