递归算法题1一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n 的顺序递增,当值大于5000 时,
递归算法题1
一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n 的顺序递增,当
值大于5000 时,把值按照指定顺序输出来。
递归算法题1
一个整数,大于0,不用循环和本地变量,按照n,2n,4n,8n 的顺序递增,当
值大于5000 时,把值按照指定顺序输出来。
(1)试定义该广义表的类结构,
(2)采用递归的算法对一个非递归的广义表进行遍历。
(3)试使用一个栈,实现一个非递归算法,对一个非递归广义表进行遍历。
(1)试证明下面的算法Primality能以80%以上的正确率判定给定的整数n是否为素数.另一方面,举出整数n的一个例子,表明算法对此整数n总是给出错误的解答,进而说明该算法不是一个蒙特卡罗算法.
(2)试找出,上述算法Primality中可用于替换整数30030的另一个整数(可使用大整数),使得用此整数代替30030后,算法的正确率提高到85%以上.
阅读下列函数说明和C代码,将应填入 处的字句写在答题纸的对应栏内。
[函数1.1说明]
函数int factors(int n)的功能是判断整数n(n>=2)是否为完全数。如果n是完全数,则函数返回0,否则返回-1。
所谓“完全数”是指整数n的所有因子(不包括n)之和等于n自身。例如28的因子为1、2、4、7、14,而28=1+2+4+7+14,因此28是“完全数”。
[函数1.1]
int factors(int n)
{
int i,s;
for(i=1,s=0;i<=n/2;i++)
if(n%i==0) (1) ;
if((2) )return 0;
return -1;
}
[函数1.2说明]
函数int maxint(int a[], int k)的功能是用递归方法求指定数组中前k个元素的最大值,并作为函数值返回。
[函数1.2]
int maxint(int a[],int k)
{
int t;
if((3) ) return (4) ;
t=maxint(a+1, (5) );
return (a[0]>t)?a[0]:t;
算法设计:对于给定欲购商品的价格和数量,以及优惠商品价,计算所购商品应付的最少费用.
数据输入:由文件input.txt提供欲购商品数据.文件的第1行中有I个整数B(0≤B≤5),表示所购商品种类数.在接下来的B行中,每行有3个数C,K和P,C表示商品的编码(每种商品有唯一编码),1≤C≤999;K表示购买该种商品总数,1≤K≤5:P:是该种商品的正常单价(每件商品的价格),1≤P≤999.注意,一次最多可购买5×5=25件商品.
由文件offer.txt提供优惠商品价数据.文件的第1行中有1个整数S(0≤S≤99).表示共有S种优惠商品组合.接下来的S行,每行的第1个数描述优惠商品组合中商品的种类数j.接着是j个数字对(C、K),其中C是商品编码,1≤C≤999;K表示该种商品在此组合中的数量,1≤K≤5.每行最后一个数字P(1≤P≤9999)长示此商品组合的优惠价.
结果输出:将计算出的所购商品应付的最少费用输出到文件output.txt