Премини към съдържанието

Препоръчан отговор


Една програма ми зацикля -

#include using namespace std;bool lab( char a[][20] , int n , int x , int y){	bool way ;	if( x < 0 || x > n -1 || y < 0 || y > n-1 || a[x][y] == '0 ') return 0 ;	if( x == n-1 && y == n-1 ) 	{		a[x][y] = '*';		return 1 ;	}	a[x][y] = '0'; 	bool way1 = lab ( a , n , x-1 , y) ;	bool way2 = lab ( a , n , x , y-1) ;	bool way3 = lab ( a , n , x , y+1) ;	bool way4 = lab ( a , n , x+1 , y) ;	way = way1 || way2 || way3 || way4 ; 	if (!way) a[x][y] = '1';	else a[x][y] = '*';	return way;}int main(){	int n ;	char a[20][20];	cout << "Enter n: ";	cin >> n;	for(int i = 0 ; i <= n-1 ; i++)		for(int j = 0 ; j > a[i][j];	cout << lab(a , n , 0, 0);	for(int i = 0 ; i <= n-1 ; i++)		for(int j = 0 ; j <= n-1 ; j++)			cout <<  a[i][j];	system("pause");	return 0 ;}
Не знам защо става така. Много ми е трудно да пиша рекурсивни програми, а никъде не съм намерил, където да пише как става това, защото , ако едно нещо забравищ и програмата заминава на кино.

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

for(int j = 0 ; j > a[j]; cout << lab(a , n , 0, 0);

Здравейте !

На пръв поглед, проблема за зациклянето е породен от цитирания ред. Поне 3 проблема виждам, свързан с цикъла:

1) Липсва затваряща скоба за самия for цикъл (Компилира ли се в това всъщност в този си вариант ?)

2) Никъде не променяте j !!! Изпусната е третата (incremental/correctional) част, която най-често би отговаряла за промяната на j (Освен това и не виждам в самото тяло на цикъла да променяте j). В този случай цикъла ви ще работи само и единствено с j=0 за всяко свое изпълнение - тогава ако условието е истина, настъпва зацикляне - ако е лъжа, цикъла никога няма да се изпълни.

3) Сравняването на индекс със някаква стойност на данните е доста специфичен пример за условие на изпълнение на даден цикъл ? Сигурен ли сте, че по условието на проблема/задачата Ви това е правилно и ако да, то тогава помислете дали не трябва да добавите още едно условие j < n (или както го ползвате на другите места j <= n-1) ?

Поздрави !

  • Харесва ми 1

Сподели този отговор


Линк към този отговор
Сподели в други сайтове

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.