C语言&关于合法括号个数&递归回溯问题

问题遇到的现象和发生背景

理解不了这个递归的原理,为什么这样写可以算出来合法括号个数?

问题相关代码,

```c
#include<stdio.h>
int n,sum=0;
void isprime(int left,int right){
if(left==n){
sum++;
return;}
isprime(left+1,right);
if(left>right){
isprime(left,right+1);
}

}
//
int main(void){
scanf("%d",&n);
isprime(0,0);
printf("%d",sum);
return 0;
}

```请勿粘贴截图

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果