Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
strenget
0 / 0 / 0
Регистрация: 19.10.2016
Сообщений: 3
1

Из итерации в рекурсию

08.12.2016, 16:00. Просмотров 292. Ответов 0
Метки нет (Все метки)

Добрый день, написал код на перебор всех значений (brute force) на подбор паролей. Но необходимо написать все тоже самое только при использовании рекурсии. Ни как не могу понять как это можно сделать( Плюс ко всему выводы должны быть упорядочены по таблице ASII. Всем спасибо за помощь.
C
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
int isLetter(char c) {
    int ci = (int)c;
    return (ci >= 49 && ci <= 57) || (ci>=65 && ci <=90) || (ci >= 97 && ci <=122);
} 
int close (int code,  char *key) {
    switch(code) {
        case 100:
            fprintf(stderr, "Error: Chybny vstup!\n");
            break;
        case 0:
            break;
    }
    free(key);
    exit(code);
}
 
int find(char *key, char one1, int l, int h) {
    int i = l+1;
    int OneIndex = l;
    for (;;) {
        if (i>h){ break;}
        if (key[i] > one1 && key[i] < key[OneIndex])
            OneIndex = i;
             i++;}
    return OneIndex;
 
}
 
void swap (char* a, char* b)
{
    char t = *a;*a = *b;*b = t;
}
int compare (const void *a, const void *b)
{  return ( *(char *)a - *(char *)b ); } //http://www.cplusplus.com/reference/cstdlib/qsort/
void Permut( char *key, int index )
{
    qsort( key, index, sizeof( key[0] ), compare ); //Sort ASII
    for (;;){
        
        printf("%s", key);
        int i;
        for ( i = index-2; i>=0; --i) {
           if (key[i] < key[i+1])
              break;}
        if ( i == -1 )
            break;
        else
        {
            int OneIndex = find (key, key[i], i + 1, index - 1 );
 
            swap( &key[i], &key[OneIndex] );
 
            qsort( key + i + 1, index - i - 1, sizeof(key[0]), compare ); //Sort
 
        }
    
}
 
}
int main(int argc, char *argv[])
{
    int Maxsize=16;
    int index=0;
 
    char *key = malloc(sizeof(char)*Maxsize);
    if (!key) return 0;
 
 
     for (size_t x = 0; x < Maxsize; ++x) key[x] = 0;
    for (;;) {
        scanf("%c", key+index);
        if (key[0] == '\n')
            {       
                return close(100,key);
            }
        if (key[index] == '\n'){
            break;
        }
        if (!isLetter(key[index])){
            
            return close(100, key);
        }
        index++;
    }
Permut( key, index);
return close(0, key);
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2016, 16:00
Ответы с готовыми решениями:

Задача на рекурсию
Пусть X1=Y1=1, Xi=Xi-1+Yi-1/i*i , Yi=Yi-1+Xi-1/i , i=2,3…. Получить Xn, Yn Не знаю как вернуть...

Объясните рекурсию
Не случайно в заголовке &quot;Объясните&quot;. Тут очень много тредов на эту тему, но все о конкретном...

Метод итерации
m1=2*(xn+2*cos(xn)); m2=2*(xk+2*cos(xk)); m=m1-m2; L=1/m; do {y=func(x); x1 =...

Написать программу на рекурсию
Нужнр написать программу, где нужно посчитать количество разложений числа на слогаемые через...

Заменить цикл на рекурсию
Вообщем, есть цикл который считает простую задачу: Пусть V1=1, V2=2, Vi=2*Vi-1+3*Vi-2, i=3,4,… ....

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.12.2016, 16:00

Заменить циклы на рекурсию
Помогите пожалуйста сделать рекурсию для циклов. Понятия не имею как она делается( #include...

Заменить цикл на рекурсию
a0=1, ak=k*ak-1+1/k, k=1,2,... . Дано n. Получить an. int cycle (int n){ double a0=1;...

Как сделать рекурсию?
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include&lt;windows.h&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru