Форум программистов, компьютерный форум CyberForum.ru

Рекурсию в цикл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как запихнуть в очередь указатель на узел дерева? http://www.cyberforum.ru/cpp-beginners/thread785049.html
как запихнуть в очередь указатель на узел дерева Добавлено через 16 минут up? Добавлено через 4 минуты как создать из узлов двоичного дерева очередь??
C++ Запись в файл, лишняя строка, не могу понять! Сломал всю голову, по каким то причинам при вводе данных клавиатуры, они записываются, но 1ая строка пустая, есть подозрение, ЧТО связано с "\n " в первом цикле. Не могу исправить, т.к. потом возникают сложности в выводе данных, да и не красиво как то это!^^ #include <iostream> #include <fstream> #include <string> using namespace std; struct abi {int n; int i; int k; http://www.cyberforum.ru/cpp-beginners/thread785047.html
ортогональная структура инвентарной ведомости C++
привет всем! вот пытаюcь решить задачу на тему односвязные списки из книги Абстракция данных и решение задач на C++. Стены и зеркала . и там нужно представить списки в таком виде ... так же вод которые я написал.. class Node { private: //Список очередности - люди, ожидающие //определенную кассету struct WaitNode { std::string who;
Двумерный массив! Вычислить сумму элементов матрицы С лежащих на побочной(обратной) диагонали C++
Ввести два одномерных массива А и B. Вычислить массив C: Cij= Ai + Bj. Вычислить сумму элементов матрицы С лежащих на побочной(обратной) диагонали. Результат вывести на экран. Помоги написать программу плз...!!!
C++ Среднее арифметическое обыкновенных дробей http://www.cyberforum.ru/cpp-beginners/thread785037.html
Всем добрый вечер! В программировании еще нуб можно сказать. Читаю "ООП в С++" Р. Лафоре(первая книга, до этого только бейсик в школе), и все бы ничего, но одно упражнение весь вечер не дает покоя.. Сабж(упражнение 5 главы 7): Написать программу, которая получает обыкновенные дроби от пользователя, сохраняет их в массиве типа fraction(это класс, его поля - числитель и знаменатель дроби),...
C++ Программа со сверхбольшими числами не выполняется до конца Сам код #include "verylong.h" void verylong::putvl()const { char temp ; strcpy(temp,vlstr); cout<<strrev(temp); } подробнее

Показать сообщение отдельно
iifat
2225 / 1378 / 102
Регистрация: 05.06.2011
Сообщений: 3,799
15.02.2013, 09:37     Рекурсию в цикл
Ну, делается это примерно вот так:
Perl 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
proc accrec {m n} {
  puts "$m $n"
  if {!$m} {
    expr {$n+1}
  } elseif {!$n} {
    accrec [expr {$m-1}] 1
  } else {
    accrec [expr {$m-1}] [accrec $m [expr {$n-1}]]
  }
}
 
puts [accrec 3 3]
 
proc accloop {m n} {
  set state 1
  set stack {}
  set acc 0
  set mm $m; set nn $n
  while {1} {
    puts ":: $state $mm $nn"
    set action 0
    switch $state {
      {1} {
    if {!$mm} {set acc [expr {$nn+1}]; set action -1} else {set state 2}
      }
      {2} {
    if {!$nn} {set newmm [expr {$mm-1}]; set newnn 1; set action 1; set state 3} else {set state 4}
      }
      {3} {
    set action -1
      }
      {4} {
    set newmm $mm; set newnn [expr {$nn-1}]; set action 1; set state 5
      }
      {5} {
    set newmm [expr {$mm-1}]; set newnn $acc; set action 1; set state 6
      }
      {6} {
    set action -1
      }
    }
    if {$action==-1} { # возврат
      if {![llength $stack]} break
      set stack [lassign $stack mm nn state]
      puts "<== ($mm $nn $state) $stack -- $acc"
    }
    if {$action==1} { # рекурсия
      set stack [linsert $stack 0 $mm $nn $state]
      puts "==> $stack"
      set state 1; set mm $newmm; set nn $newnn
    }
  }
  return $acc
}
 
puts [accloop 3 3]
Это tcl, на ++ лень расписывать.
Это функция Аккермана в рекурсивном и нерекурсивном варианте. Составляется что-то типа автомата или блок-схемы с метками и заводится свой стек. Разумеется, для понимабельность страдает
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru