Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Рекурсивная функция / 6 сообщений из 6, страница 1 из 1
12.11.2005, 14:30
    #33374987
Marik_1973
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивная функция
Добрый день,

Помогите пожалуйста написать рекурсивную функцию которая
будет получать целое число и выводить все варианты этого числа состоящие из 0 и 1
например: число 4
вывод:
1111
1100
1101
1100
1011
1010
1001
1000

0111
0110
0101
0100
0111
0010
0001
0000

Заранее спасибо
...
Рейтинг: 0 / 0
13.11.2005, 11:23
    #33375302
Lelikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивная функция
Функция варьирует i-ый разряд и вызывает себя для варьирования i+1-го разряда.
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
13.11.2005, 12:32
    #33375334
Землекоп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивная функция
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#include <limits.h>
#include <iostream>

using namespace std;

void func(unsigned int n)
	{
	unsigned int i,m=n;
	static unsigned int bits=sizeof(n)*CHAR_BIT;
	static unsigned int mask = ( 1 <<(bits- 1 ));

	for(i= 0 ; i< bits; ++i, m<<= 1 ) cout << ((m&mask)? 1 : 0 );
	cout<<endl;
	if(n) func(--n);
	}
int main(int argc,char *argv[])
	{
	func( 16 );
	return  0 ;
	}
...
Рейтинг: 0 / 0
13.11.2005, 14:04
    #33375391
Землекоп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивная функция
Неправильно понял условие. Точнее будет так:

Код: plaintext
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.
#include <limits.h>
#include <iostream>

using namespace std;

void func(unsigned int n, unsigned int mm=((unsigned int)- 1 ))
	{
	unsigned int i,m;
	static unsigned int bits=sizeof(n)*CHAR_BIT;
	static unsigned int mask = ( 1 <<(bits- 1 ));


	if(n>bits || n== 0 ) return;
	
	m=mm<<(bits-n);
	mm=m>>(bits-n);
	for(i= 0 ; i<n; ++i, m<<= 1 ) cout << ((m&mask)? 1 : 0 );
	cout<<endl;
	if( (--mm)!=((unsigned int)(- 1 ))) func(n,mm);
	}
int main(int argc,char *argv[])
	{
	func( 4 );
	return  0 ;
	}
...
Рейтинг: 0 / 0
13.11.2005, 16:49
    #33375469
Marik_1973
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивная функция
Cпасибо !
...
Рейтинг: 0 / 0
14.11.2005, 07:14
    #33375729
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Рекурсивная функция
Опять упражнения ... да и зачем тут рекурсия ? все циклом решается, простым инкрементом целого числа.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Рекурсивная функция / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]