Вот моя функция, важная строка - это то, где я снова вызываю f().Функция, вызывающая неправильные значения
def f(num,xyz,possible,temp):
y = num%9
x = num-y
print num
for xyz[num] in possible[num]:
if ispossibility(temp,xyz[num],x,y) == True:
temp[num] = xyz[num]
if num != 80:
f(num+1,xyz,possible,temp) # i call f() with num incremented
else:
print 'yes'
exit()
Выход программы
0
1
2
3
4
5
6
7
8
3
2
3
3
Проблема заключается в том, что всякий раз, когда функция F() вызывается, переменная Num всегда должен быть увеличен на 1. Но из выходного, F () вызывается с номером 3, когда он был раньше восьми. И поэтому мне интересно, как это возможно (вывод должен быть 9 битв, а не 3), когда f() всегда называется w/num, увеличивающимся на 1. Я уже некоторое время смотрю на эту функцию, и я действительно не понимаю, что происходит.
Каковы начальные значения аргументов. Другими словами: как выглядит ваш первоначальный вызов? Является ли это 'f (0, ..., ..., ...)' тем, что вместо '...' s? Также: пожалуйста, сообщите нам функцию 'ispossibility'. – Tadeck
Что такое строка 'для xyz [num] в возможном [num]:' предназначена? Я не уверен, что видел это раньше. – DSM
DSM Я пытаюсь сделать решатель sudoku, и поэтому у него есть все возможные номера для соответствующих полей. Таким образом, это выглядит как возможное = [[1,2], [2,4,2] ...] и т. Д. До возможного [80], у которого есть возможности для последнего окна. Посмотрев на мой код, я считаю, что использование xyz [num] не требуется. Bc я вызываю функцию, поэтому переменная будет локальной. Но в случае, если вы не понимаете, xyz [num] используется, чтобы попробовать все возможные перестановки полей. Я думаю, что знаю более/более понятный способ сделать это сейчас. Так спасибо DSM – bab