C++ Boolean Sürekli False Değerini Döndürüyor

Sertidegni

Hectopat
Katılım
10 Mayıs 2019
Mesajlar
834
Çözümler
3
C++:
#include <iostream>
using namespace std;

bool Testing() {
    static int Variable = 0;

    if (Variable == 1) return true;
    else {
        Variable = 1;
        Testing();
    }

    return false;
}

int main()
{
    if (Testing()) cout << "True";
    else cout << "False";
}

Yukarıdaki fonksiyon kendi içerisinde tekrar çağırıldığında if (Variable == 1) kısmı true döndüğü halde içerisindeki return true; komutu çalışmıyor ve ardından gelen hiçbir komut çalışmıyor.
 
C++:
#include <iostream>
using namespace std;

static int Variable = 0;

bool Testing() {

    if (Variable == 1) return true;
    else {
        Variable = 1;
        Testing();
    }

    return false;
}

int main()

C++:
#include <iostream>
using namespace std;

void main()
{
    int Variable = 0;
    Testing(Variable);
}

bool Testing(int Variable) {

    if (Variable == 1) return true;
    else {
        Variable = 1;
        Testing(Variable);
    }

    return false;
}

int main()

Test metodu her çağırıldığında, Variable değeri 0 olarak setleniyor, ya metod dışında tanımlaman gerekir ya da değeri input olarak alacaksın.
 
C++:
#include <iostream>
using namespace std;

static int Variable = 0;

bool Testing() {

    if (Variable == 1) return true;
    else {
        Variable = 1;
        Testing();
    }

    return false;
}

int main()

C++:
#include <iostream>
using namespace std;

void main()
{
    int Variable = 0;
    Testing(Variable);
}

bool Testing(int Variable) {

    if (Variable == 1) return true;
    else {
        Variable = 1;
        Testing(Variable);
    }

    return false;
}

int main()

Test metodu her çağırıldığında, Variable değeri 0 olarak setleniyor, ya metod dışında tanımlaman gerekir ya da değeri input olarak alacaksın.
C++:
#include <iostream>

bool Function(int Variable) {
    if (Variable == 1) return true;
    else {
        Variable = 1;
        Function(Variable);
    }

    return false;
}

int main()
{
    if (Function(0)) std::cout << "True";
    else std::cout << "False";
}
Her seferinde 0 olmasın diye static int olarak tanımladım. Bu şekilde de hiçbir değişiklik olmadı.
 
Yazdığın kodun amacı ne? Variable değişkenini bir satır yukarıda 0 yapıp 1 olan sorguya girmesini nasıl bekleyebilirsin? Recursive yapmaya çalışıyorsun ama mantık hatası var.
 
Son düzenleme:
C++:
#include <iostream>

bool Function(int Variable) {

    bool resp = false;

    if (Variable == 1)
        resp = true;
        //return true;
    else {
        Variable = 1;

        // rekürsif fonksiyon yapısı kullanılmış fakat içten gelen cevap dışarı dönmüyordu.
        resp = Function(Variable);
    }

    return resp;
    //return false;
}

int main()
{
    if (Function(0)) std::cout << "True";
 
Yazdığın kodun amacı ne? Variable değişkenini bir satır yukarıda 0 yapıp 1 olan sorguya girmesini nasıl bekleyebilirsin?
Else bloğunda Variable değişkenini 1 yaptıktan sonra fonksiyonu tekrar çağırdım. Bu da If bloğuna girmesini sağladı.

Screenshot 2021-01-13 002244.png
 
Else bloğunda Variable değişkenini 1 yaptıktan sonra fonksiyonu tekrar çağırdım. Bu da If bloğuna girmesini sağladı.

Eki Görüntüle 832822
Tamam ama recursive bu şekilde çalışmaz. Sen fonksiyonun en sonunda yine false döndürüyorsun. Yani fonksiyon 2. çalıştırdığında true döndürüyor ama kendi içinde true döndürüyor. En sonunda main methoda yine false dönüyor.
 
Son düzenleme:
Tamam ama recursive bu şekilde çalışmaz. Sen fonksiyonun en sonunda yine false döndürüyorsun. Yani fonksiyon 2. çalıştırdığında true döndürüyor ama kendi içinde true döndürüyor. En sonunda main methoda yine false dönüyor.
En sonunda neden false döndüğünü anlamadım. return true çalıştıktan sonra fonksiyonun dışında çıkması gerekmiyor mu?
 
En sonunda neden false döndüğünü anlamadım. return true çalıştıktan sonra fonksiyonun dışında çıkması gerekmiyor mu?
Hayır, çıkmaz. O içteki fonksiyona değer döndürüyor. Sen ilk başta fonksiyona gittiğinde kod ilerliyor ve ikinci fonksiyonu çağırdığında o fonksiyon için değer döndürüyorsun. Kod ilerlemeye devam ediyor, kesilmiyor.
 
Hayır, çıkmaz. O içteki fonksiyona değer döndürüyor. Sen ilk başta fonksiyona gittiğinde kod ilerliyor ve ikinci fonksiyonu çağırdığında o fonksiyon için değer döndürüyorsun. Kod ilerlemeye devam ediyor, kesilmiyor.
İçteki fonksiyondan kastınız nedir? Breakpoint koyduğumda return true çalıştıktan sonra fonksiyonun dışına çıkıyor ancak tekrar girip sadece return false kısmını çalıştırıyor. Bu kısmını tam anlamadım. Öğrenebilmem için bir kaynak önerir misiniz? Baktıklarımda buna denk gelemedim.
 

Geri
Yukarı