English 中文(简体)
否 我要求进行身体类比或 met子的再入侵?
原标题:Could I ask for physical analogies or metaphors for recursion?

我突然在一次复读语言班(sml)中,再入侵对我来说还不是实际的。 我对地块的底线的思路,有时是用于激化繁殖的模型或比喻,或Cuisenaire Rods是添加和减小的模型或类比。 是否有任何这样的模式可以分享?

最佳回答

想象一下你真的活mag,可以制作。 你使你成为更接近目标的两倍,并给他(或她)与你相同的命令。

你的两倍与他的复印件相同。 你们也看到他 s魔。

最终文本如在目标上产生,则无所作为,因此,它又向创建者报告。 情况相同。

最后,你得到回答——,没有在>上移动,现在很容易产生最后结果。 你们不得不假装不了解你实际辛勤工作的所有双倍。 <>Hmm>,, 您在以下场合再次发言: ∗∗∗∗∗∗∗

当然,如果you是双重的,你就必须向your创作者报告调查结果。

(同时,我认为我看到这一“双重”创作链式活动here,尽管我并不完全相信。)


(*) and that is the essence of the recursion method of problem solving.

我知道我的程序是正确的? 如果我的简单小的合并步骤产生一个有效的解决办法,假定它为较小的案件提供了正确的解决办法,那么,我就需要确保它能够处理最小的案件——基例——然后是induction。 有效性证明!

另一种可能性是:divide-and-conquer,我们把我们的问题分为两半部分,这样就能够更快地处理基案。 只要组合步骤为simple 它行之有效。 在我们的神学院中,我不得不制作2<>m> /em>本人的复印件,并将两处回答在填写时一起。 每一个政党都制作两本自己的版本,因此形成了一个神学家的分支树,而不是像以前那样的简单树。

这方面的一个例子是scaping<>em> amaze <>>,或例如,找到最短的越航路线length。 在到达关口时,我们只是寄出自己的印本,一份是我们前边的出路(divide )。 如果要逃脱,如果马齐格人完全撤出的话,至少一份禁令的复印件之一将确实逃脱马齐格。 如果目标是找到一条越狱路线,我们就只听取每份返回的复印件对我们说的话,然后将our<>/em>报告,然后将其通过our<><>>/em> 制片人(conquer/combine step)。

另一个物理例子是俄文Matryoshka doll。 a 可能包含Matryoshka doll。 最弱小的炮弹是空的。

More about recursion here (accumulators) and here (硬币改动)。


另一个更常规的方法是,只有一名工人在上填写。 <recipes> i.e. 按照需要,按照投入方案开展工作的职能定义。

上,我们坐在上桌上上,供应的空洞<>>>纸面。 我们还在纸面上写出一些执行方,有些地方可以按需要查阅,另一个是“主要”的对应体,即将在its<>>>>>上填写的“program”。

Placing the program recipe in front of us, we follow it along, making notes at the margins as to the variables values. Encountering a function call, we proceed to note the point of call at the margin, then copy that function s recipe onto a fresh empty sheet of paper and place that copy on top the current one in front of us, and follow it along from the top.

因此,一张<<><>>><>>>/em>的表格正在我们前面形成。 当我们完成对reci的处决时,我们注意到其回报价值,然后抛弃纸张,并写在预计到点<>的<>-em>的纸面上,然后继续使用目前摆在我们前面的对等。 如果没有更多的reci,执行就停止。

人们可以立即指出,我们重新复制新空白纸张的正文是否是我们现在所遵循的同文(recursion<>/em>)或我们沿用几张纸张(mutual)。 新复制件是新鲜的,新版是independ,有its/em>——我们确实复制了original recipe,而不是在栏内复制任何复制件。


另一个例子是Sierpinski triangle 。 这一数字只是从 3 季度级Sierpinski triangles上得出的,用在角逐。

三个组成部分的每个单元都按照建造。

虽然它没有基本案例,因此,重新入侵是不受约束的(没有固定的;无限期的),但S.T.的任何代表(finite,大概只能拿一个声音代替太小的S.T.(作为基例,停止入侵)。

与此相关的Wikipedia的文章对此做了一番.。

如果没有规模限制,再造S.T.永远不会引诱任何东西。 数学师的再造可能很大,但工程师对此应更加谨慎。

转至 计分 穿透(见与此相关的答案),我们首先要提一下大纲,然后是内地;即便没有大小限制,情况也会很快出现。 之后,该方案将不产生任何明显的影响,但比空洞的屏幕要好。

问题回答

I love this question and couldn t resist to add an answer...

Recursion is the russian doll of programming. The first example that come to my mind is closer to an example of mutual recursion :

Mutual recursion everyday example

当我们有两个职能时(<代码>A和B。 定义如下:<代码>A。 你们可以非常容易地利用网络作风(还使用2台镜子):

  1. display the webcam output on your screen with VLC, or any software that can do it.
  2. Point your webcam to the screen.
  3. The screen will progressively display an infinite "vortex" of screen.

发生了什么?

  • The webcam (A) capture the screen (B)
  • The screen display the image captured by the webcam (the screen itself).
  • The webcam capture the screen with a screen displayed on it.
  • The screen display that image (now there are two screens displayed)
  • And so on.

最后,你以这种形象为终结(我的网络运动是完全强奸):

</a

“大规模”再保险大致相同,但只有一个行为体(功能)自称(/:/code>)

"Simple" Recursion

That的答案与@WillNess大致相同,但只有很少的代码和一些互动(使用SO的js snippets)

Let s say you are a very motivated gold-miner looking for gold, with a very tiny mine, so tiny that you can only look for gold vertically. And so you dig, and you check for gold. If you find some, you don t have to dig anymore, just take the gold and go. But if you don t, that means you have to dig deeper. So there are only two things that can stop you:

  1. Finding some gold nugget.
  2. The Earth s boiling kernel of melted iron.

因此,如果你想以方案方式——利用再入侵——来书写,那就象这样:

// This function only generates a probability of 1/10
function checkForGold() {
  let rnd = Math.round(Math.random() * 10);
  return rnd === 1;
}

function digUntilYouFind() {
  if (checkForGold()) {
    return 1; // he found something, no need to dig deeper
  }
  // gold not found, digging deeper
  return digUntilYouFind();
}

let gold = digUntilYouFind();
console.log(`${gold} nugget found`);

或者,互动性稍微提高:

// This function only generates a probability of 1/10
function checkForGold() {
  console.log("checking...");
  let rnd = Math.round(Math.random() * 10);
  return rnd === 1;
}

function digUntilYouFind() {
  if (checkForGold()) {
    console.log("OMG, I found something !")
    return 1;
  }
  try {
    console.log("digging...");
    return digUntilYouFind();
  } finally {
    console.log("climbing back...");
  }
}

let gold = digUntilYouFind();
console.log(`${gold} nugget found`);

If we don t find some gold, the digUntilYouFind function calls itself. When the miner "climbs back" from his mine it s actually the deepest child call to the function returning the gold nugget through all its parents (the call stack) until the value can be assigned to the gold variable.

这里,避免采矿者向地球挖掘机的可能性非常大。 地球上的梯子是采矿者, st的大小是方案。 当地雷者来到掩体时,他在可怕的疼痛中死亡,当时该方案超过了 st体大小(造成flow流出),因此坠毁。

There are optimization that can be made by the compiler/interpreter to allow infinite level of recursion like tail-call optimization.

这是一种奇怪的情况,但跳舞是身体上的除外。 第二天上午,我就看到了这种情况。 我称之为“拉丁字母”,在希伯来语解决。 Huh? 当然,你说的是“Huh?”

我指的是,在拉丁字母的风格中,通常控制一次反射:“Def fac(n) = n*(fac(n-1)”)。 流动方式是“从属情况”

但(请让我就此检查一下)至少就这一简单案例而言,用希伯来字母字母字母字体来评价它是最容易的: 1. 起源于基情,向最外的案件:

                                                   (fac(0) = 1)
                                      (fac(1) = 1)*(fac(0) = 1)
                             (fac(2))*(fac(1) = 1)*(fac(0) = 1)
       (fac(n)*(fac(n-1)*...*(fac(2))*(fac(1) = 1)*(fac(0) = 1)
(*  Easier order to calculate <<<<<<<<<<< is leftwards, 
    base outwards to outermost case;
    more difficult order to calculate >>>>>> is rightwards, 
    outermost case to base  *)

然后,在等待计算结果时,你不必中止所剩物品。 “离开”而不是“居住权”?





相关问题
Recursive same-table query in SQL Server 2008

I have the following table in a SQL Server 2008 database: Id Name ParentFolder -- ---- ------------ 1 Europe NULL 2 Asia NULL 3 Germany 1 4 UK 1 5 China ...

Finding a class within list

I have a class (Node) which has a property of SubNodes which is a List of the Node class I have a list of Nodes (of which each Node may or may not have a list of SubNodes within itself) I need to be ...

Selecting records during recursive stored procedure

I ve got a content management system that contains a hierarchical structure of categories, with sub-categories subject to different ordering options at each level. Currently, that s retrieved by a (...