单项选择(2016年腾讯公司校园招聘)

递归函数最终会结束,那么这个函数一定【 】

A、使用了局部变量

B、有一个分支不调用自身

C、使用了全局变量或者使用了一个或多个参数

D、没有循环调用

答案解析

B1、局部变量只是在调用局部范围有效,出了这次调用的范围就无效了,它不能控制递归的结束。2、递归函数中,如果没有一个分支不调用自身,递归就不会结束。3、使用全局变量或使用一个或多个参数的确可以控制递归...

查看完整答案

讨论

对于正整数n ,输出其和等于n且满足以下限制条件的所有正整数的和式,组成和式的数字自左至右构成一个非递增的序列。如 n = 4 ,程序输出为:4 = 44 = 3 + 14 = 2 + 24 = 2 + 1 + 1 4 = 1 + 1 + 1 + 1test 是实现该功能的 C 程序段,请将未完成的部分补足,使之完整。test 函数为一递归函数,参数 n 为被分解和式的数, k 为当前的分解深度。算法思想是对 n 的所有合理的和式分解,将分解出的数(称为和数)存于二数组 a[]中。当其中一个分解己不再需要进一步进行时,即找到一个解,将存于 a[] 中的一个完整和式的和数输出。当还需要进一部分解时,以要进一部分解的数及分解深度为参数,递归调用 test 函数。#define MAXN 100 int a[MAXN]; test(int n,int k){     int i,j;     for (j=__________;j>=1;j--){         a[k]=j;          if (__________){             printf ( "%d = %d" , a[0],a[l]);             for (i = 2 ; i < = k ; i + + )                 printf ( " + % d " , a[i]);             printf ( "  n " );         }else test(__________,k + l );     } }

在单 CPU 计算机系统中,完成相同功能的递归程序比非递归程序【 】

下列排序算法中,哪些时间复杂度不会超过nlogn【 】。

初始序列为1 8 6 2 5 4 7 3一组数采用堆排序,当建堆(小根堆)完毕时,堆所对应的二叉树中序遍历序列为【 】。

递归函数最终会结束,那么这个函数一定【 】

递归函数最终会结束,那么这个函数一定【 】

递归函数最终会结束,那么这个函数一定【 】

递归函数最终会结束,那么这个函数一定【 】

递归函数最终会结束,那么这个函数一定【 】

递归函数最终会结束,那么这个函数一定【 】