Как значение 1 передается в оператор if в основной функции и как работает функция возврата с рекурсивным вызовом?Как функция return возвращает значение в оператор If?
#include <stdio.h>
#include <stdlib.h>
int identicalTrees(struct node* a, struct node* b)
{
if (a==NULL && b==NULL)
return 1;
if (a!=NULL && b!=NULL)
{
return
(
a->data == b->data &&
identicalTrees(a->left, b->left) &&
identicalTrees(a->right, b->right)
);
}
return 0;
}
int main()
{
if(identicalTrees(root1, root2))
printf("Both tree are identical.");
else
printf("Trees are not identical.");
getchar();
return 0;
}
Что такое функция возврата? 'return' не является функцией, это утверждение. И он возвращает значение вызывающему, потому что это говорит об определении языка. –
Есть несколько отличных видеороликов, которые объясняют, как рекурсия и стек работают на канале Computerphile на youtube. Вы должны смотреть на них всех. https://www.youtube.com/watch?v=Mv9NEXX1VHc, https://www.youtube.com/watch?v=TrfcJCulsF4, https://www.youtube.com/watch?v=7t_pTlH9HwA, https: //www.youtube.com/watch?v=7ha78yWRDlE, https://www.youtube.com/watch?v=S_NXz7I5dQc – SpiderPig
Вы определенно хотите прочитать о [стек вызовов] (https: //en.wikipedia. орг/вики/Call_stack). –