程序设计报告1——递归

asjcx_fscbti / 2024-10-14 / 原文

递归的原理

通俗来说,一个函数调用自身就是递归。
递归是纵向地解决问题,是一种思维方式。

用树来刻画是最为直观的。
在分析问题时可以画一画递归树,从而有个更好的理解。

函数

其实在求解问题时,可以把递归当作一个有边界,封闭的函数。
例如需要求\(f_n\),而\(f_n=\sum_\limits{i=1}^{n-1} f_i\),那就可以将问题转变为\(n-1\)个子问题。
如果知道边界,那么递归就是可行的了。

在程序内部,递归的实现是利用栈的。因此,可以用手动模拟栈来代替函数递归。

stack qwq
while(!qwq.empty()){
  auto awa=qwq.top()
  if(!next[awa].empty()){
      qwq.push(next[awa].top()),next[awa].pop()
   }
   else qwq.pop()
}

最后留一个小练习题

给第一篇题解一个赞谢谢啦