LINUX.ORG.RU

Ошибка сегментирования (сделан дамп памяти)-проблема со стеком на Си

 ,


0

2

Написал программу для перевода числа из десятеричной системы счисления в двоичную,применив рекурсию. Компилируется нормально - ошибок не выдает,как только запускаю - выдает ошибку сегментации. Как исправить можно??

[20:26 bash] hoffman @~/Code$ gcc Binary.c
[20:26 bash] hoffman @~/Code$ ./a.out
Ошибка сегментирования (сделан дамп памяти)
[20:26 bash] hoffman @~/Code$ 
#include <stdio.h>
const N=30 ;

void Bin (int n)
{
	int a,b;
	
	
	if (n>0)
	{
		a=n%2;
		b=n/2;
		n=b;
	}
	Bin (n);
	printf ("%d",a);

}


int main()
{
 Bin (N);

 return 0;
}

переменная b ненужна, а ещё условия выхода тебя нет.

actics
()
Ответ на: комментарий от trex6

Это еще зачем? Ему же надо число получить. Вы числа в столбик записываете?

Тут бесконечная рекурсия. Надо

---	}
+++	} else

Kiborg ★★★
()
Ответ на: комментарий от Kiborg

Это еще зачем?

Чтобы он сам дошел до того, что у него

Тут бесконечная рекурсия.

Я его научить пытаюсь, а не проблему решить.

trex6 ★★★★★
()
Последнее исправление: trex6 (всего исправлений: 2)

подумай что у тебя будет при n = 0

invy ★★★★★
()
Ответ на: комментарий от trex6

Впрочем, я сам фигню написал, но я понял цель того коммента :) интересная мысль.

Kiborg ★★★
()
Ответ на: комментарий от O02eg

trex6 был прав, он с его патчем как раз поймет в чем дело :)

Kiborg ★★★
()
Ответ на: комментарий от tailgunner

Не является - Bin(n) вызывается вне зависимости от n.

Спасибо,разобрался.

Hoffman
() автор топика
Ответ на: комментарий от O02eg

Заодно и узнает.

А самое главное - увидит, что его функция вызывается 100500 раз и начнет думать, почему так.

trex6 ★★★★★
()
Ответ на: комментарий от trex6

Боюсь, что как раз этого он и не увидит.

O02eg ★★★★★
()

Ядерные хэккеры итт.

anonymous
()

:(

include <stdio.h>
const N=30 ;

void Bin (int n){/*n>=0*/
	if(n)Bin(n>>1);/* n==-1 :) */
	printf ("%d",n&&1);
}


int main(){
        Bin (N);
        return 0;
}

если можем размещать на стеке в аргументах - возможно функции не требуются локальные.

qulinxao ★★☆
()
Ответ на: комментарий от m_

ага.

но можно и без патча - ибо иначе совсем не учёба

qulinxao ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.