这段代码执行过程有点看不懂,不太能够理解,请教一下
void dfs(int i,int sum){
if(i == n) return sum == k;
if(dfs(i+1,sum)) return true;//不加第i个数
if(dfs(i+1,sum+a[i])) return true;//加上第i个数
return false;
这个n在哪里定义的?void怎么返回true false?你的程序是干嘛的
代码1:(*(void (*)())0)();
代码2:void (*signal(int , void(*)(int)))(int);
代码分析:
在读代码时,代码2可谓是相当复杂,为了增加代码的可读性,我们可以使用typedfy-类型重定义关键字对其进行简化:
int main()
{
void(*signal(int, void(*)(int)))(int);
typedef void(*pf_t)(int) ;//语法规定pf_t在*后边
pf_t signal( int, pf_t);
//////////////////////////////注释////////////////////////////
//上述代码是一次函数声明
//声明的函数叫:signal
//signal函数的第一个参数是int类型的
//signal函数的第二个参数是一个函数指针类型,该函数指针指向的函数参数是int,返回类型是void
//signal函数的返回类型也是一个函数指针类型,该函数指针指向的函数参数是int,返回类型是void
//void (*)(int) signal(int, void(*)(int)); //err
return 0;
}
📖总结:像上面这样的表达式恐怕会令我们“不寒而粟”。然而我们大可不必对此望而生畏,我们只需要对其进行拆解,就能对其很好地理解。
问题解答:
针对这个问题,参考资料中并没有给出具体代码,因此无法解答。
PS:关于函数递归,可以简单地理解为函数自己调用自己,递归有明显的实际应用,比如计算阶乘、斐波那契数列等问题。由于没有给出具体的函数代码,建议作者自己查找一下递归的相关资料,并结合实际代码进行理解。