Я пытаюсь создать таблицу истинности в c # для 3 символов, поэтому она должна создать 2 ^ 3 = 8 таблиц. но мой рекурсивный метод не работает.
Мой код ниже. в каждом цикле я добавляю символ и создаю новый словарь с одним истинным и одним ложным значением.
public void TTEntails()
{
Queue<string> s = new Queue<string>();
s.Enqueue("p");
s.Enqueue("q");
s.Enqueue("r");
TTCheckAll(s, new Dictionary<string, bool>());
}
public void TTCheckAll(Queue<string> symbol, Dictionary<string, bool> model)
{
if (symbol.Count == 0)
{
PLTrue(model);
}
else
{
string topSymbol = symbol.Dequeue();
TTCheckAll(symbol, ReturnDict(model, topSymbol, true));
TTCheckAll(symbol, ReturnDict(model, topSymbol, false));
}
}
private Dictionary<string, bool> ReturnDict(Dictionary<string, bool> model, string key, bool value)
{
Dictionary<string, bool> newDict = new Dictionary<string, bool>(model);
newDict.Add(key, value);
return newDict;
}
полученный результат выглядит следующим образом:
p, True
q, True
r, True
p, True
q, True
r, False
p, True
q, False
p, False
результат должен быть
p, True
q, True
r, True
p, True
q, True
r, false
p, True
q, false
r, True
p, True
q, false
r, false
p, false
q, True
r, True
p, false
q, True
r, false
p, false
q, false
r, True
p, false
q, false
r, false