我从“递归编程简介”一书中阅读了目录
但是我还是不明白什么是递归编程。
除了它的代码少一点
// рекурсивная функция
int sum_first_natyrals(int n)
{
if(n==1)
return 1;
else
return sum_first_natyrals(n-1) + n;
}
还有一点复杂性。
// не рекурсивная функция
int sum_first_natyrals(int n)
{
int s_f_n =0;
if(n==1)
return 1;
else
for (int i = n; i <0; i--)
s_f_n += i;
return s_f_n;
}
我还记得在面试时会注意这种编程方法。
考虑到这一点,实际上,对我个人而言,函数调用(不是单个调用,而是频繁调用)已经显示为“递归”。要么这是一种营销策略,比如“黄油”,要么就像我在饼干上看到的那样,铭文:“适合与鹰嘴豆泥和马苏里拉奶酪一起使用”。与这样更准确的拼写形成对比的是更多的营销声音:“适合与豌豆粥和奶酪一起使用”。
一些递归编程的算法实际上会比它们的迭代算法更优雅。
但在实践中,应谨慎处理递归实现(而不是因为堆栈),因为当处理数据的新需求出现时,此类程序通常更难更改。
更准确地说,有必要提前仔细计划如何通过递归函数使用的内部结构“拉伸”外部数据的可能变化。特别是当紧急情况发生在递归调用中的某个地方时。
递归编程是使用递归进行编程。
递归(在编程中)是使用引用自身来执行给定任务的函数(方法)。
例子。软饮料需要将一块冰块粉碎成不大于 1.5 厘米的碎片。使用递归的解决方案:
那些。首先我们对整个块应用crush_ice动作,然后是较小的块,然后是它们自己的块,依此类推,直到我们得到大小不超过 1.5 厘米的块。这个检查(在这种情况下,对于piece) 是一种脱离递归的方法并且是强制的,否则函数将“无限期地”调用自身。