递归如何在循环中起作用?

时间:2015-10-31 11:29:09

标签: c++

我知道递归意味着一个函数调用自己。 iteartion意味着有一个循环(同时,做..) 问题我想知道我的程序在循环中有Recursion时如何运行: **这个例子将生成给定strin的所有排列:

angular.element(el).parent().parent();

我想跟踪我的节目。任何人都可以解释它是如何运行的吗?

1 个答案:

答案 0 :(得分:0)

递归链深入size次调用加一个空字符串。每个递归步骤调用string_permutation() size次,将字符串参数orig缩小一个符号(size - 1)。因此,对size!的{​​{1}}调用总数可以生成所有可能的排列。

可以描述为图表:

string_permutation()

尾部调用优化不能应用于这种类型的递归。 因此,您应该期望它在本地string_permutation: // top call for entire size N // start loop for smaller strings size = N - 1 string_permutation: // start loop for smaller strings size = N - 2 string_permutation: // loop step 0, size = N - 2 // start loop for smaller strings size = N - 3 string_permutation: //... string_permutation: // loop step 1, size = N - 2 string_permutation: // loop step 2, size = N - 2 //... string_permutation: //... size的{​​{1}}个实例的堆栈链上创建。