在C ++中使递归更有效

时间:2015-07-27 17:48:41

标签: c++ algorithm recursion

我在C ++中编写了以下递归

//Open Android Text-To-Speech Settings
startActivity(Build.VERSION.SDK_INT >= 14 ?
        new Intent().setAction("com.android.settings.TTS_SETTINGS").setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) :
        new Intent().addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.android.settings", "com.android.settings.TextToSpeechSettings")).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

此代码执行以下操作:例如,N = 100。该数组将包含最多为N的平方根的素数,因此array = {2,3,5,7}。通过这种递归,我们可以计算出2到100之间的数字是{2,3,5,7}中素数p的倍数,但不是p的倍数。

如果我想将这个用于大数N,比如10 ^ 9,那么程序完成需要花费太多时间。

我的问题是我们是否可以优化上面给出的代码。如果没有,那么我必须找到一种不同的算法来计算上面解释的所需数字。

1 个答案:

答案 0 :(得分:2)

提高递归性能的一种方法是将参数数量减少到最低限度。

另一种方法是用迭代替换递归。这需要算法分析或洞察力。

另一种方法是降低递归的级别。这也需要分析和洞察力。

瞥了一眼您的代码后,通过添加一个数组来跟踪以前计算的值,看起来它似乎已经成熟,可以进行迭代替换。