关于递归算法,急!回答满意给30分! 应该是选择B. f(1)=1.排除法,D显然不可能。然后n>1。就排除A,C 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 应该是选择B. f(1)=1.排除法,D显然不可能。然后n>1,根据公式f(n)=f(n-1)+n (n>1)。就排除A,C. 应该是选择B. f(1)=1,根据我的算法经验,1>1吗?所以在n=1时程序出口。 int f(int n){ if(n>1){ return f(n-1)+n; } else{ return ... ?? }}还是说int f(int n){ int tempi; // here default is 0, according to the definition of java language. if(n>1){ tempi=f(n-1); } return tempi + n;}那里来的题目?出口条件 不是 n>1 ?中学的时候,老师也许就会告诉我们:“这个题目出得有问题。”为了在有效的时间里面得到足够高的分数,直接放弃这个题目,随便选个答案。n! = n*(n-1)*...*2*1 然后 0!=1 ?这个最后的值应该是手工设定的。如果是 c/c++ 这个 tempi的值,如果不是手工初始化,值就会是任意的。 int f(int n){ if(n>1){ return f(n-1)+n; } else{ return 1 }} public class Test{ public static void main(String[] args) { Test m = new Test(); m.ff(); } private int f(int n){ if(n>1){ return f(n-1)+n; } else{ return 1; } } private void ff() { System.out.println("10+9+8+...+1="+ f(10)); } }; 回复人: caihongdaxian(彩虹) ( ) 信誉:100 2004-06-11 22:54:00 得分: 0 应该是A,若在不给出条件是的系统环境默认值为0;-------------你这叫画蛇添角:)谁出的题目啊?扁他!!不过,估计他要你选B!如果不是多选,那你就选B好了。因为这样刚好符合 1+2+3+4..... 这个题目。这有什么好郁闷的啊?真是。 static double PowerCalc(double x,int n) { if(n>1) return x*PowerCalc(x,n-1); else if(n<0) return 1.0/PowerCalc(x,-n); else return n==0?1.0:x; }当n>1时,连续执行n次x*PowerCalc(x,n-1);返回它们的连乘积;当n<0时,连续执行n次x*PowerCalc(x,n-1);返回它们的连乘积的倒数;你理解一下只考虑n>0时,递归结构的写法: static double PowerCalc(double x,int n) { if(n>1) return x*PowerCalc(x,n-1); else return 1; }调用 System.out.println(PowerCalc(2,4));单步调试查看n的值,就可以发现这个递归实际等价于:for (int s = 1,i = n; i > 0; --i) s *= x;原程序中,考虑到n < 0,就是返回x^|n|的倒数 为什么getKeyCode()返回的总是0 JavaSE Swing界面中关于Oracle数据库的问题 学生人事管理系统 数组 一个有趣的算法,请教中? 在GDI+中如何指定并删除一个图元?谢,分不够再加。急,谢谢大伙。 javabean java类 散50分,请教:如何将(4*(100+0.8)-1)表达式储存为数组? 刚开始学JAVA,问个极菜的问题,帮帮忙! 怎么在jbuilder7里做成jar文件?在线等 请问java调用存储过程(返回多个rs)后,怎么样得到多个记录集rs? 请问怎样把字符转换成整数?比如“3333”转成整数3333
if(n>1){
return f(n-1)+n;
}
else{
return ... ??
}
}还是说int f(int n){
int tempi; // here default is 0, according to the definition of java language.
if(n>1){
tempi=f(n-1);
}
return tempi + n;
}那里来的题目?
出口条件 不是 n>1 ?中学的时候,老师也许就会告诉我们:“这个题目出得有问题。”为了在有效的时间里面得到足够高的分数,直接放弃这个题目,随便选个答案。n! = n*(n-1)*...*2*1 然后 0!=1 ?
这个最后的值应该是手工设定的。
如果是 c/c++ 这个 tempi的值,如果不是手工初始化,值就会是任意的。
int f(int n){
if(n>1){
return f(n-1)+n;
}
else{
return 1
}
}
public static void main(String[] args)
{
Test m = new Test();
m.ff();
}
private int f(int n){
if(n>1){
return f(n-1)+n;
}
else{
return 1;
}
}
private void ff()
{
System.out.println("10+9+8+...+1="+ f(10));
}
};
应该是A,若在不给出条件是的系统环境默认值为0;
-------------
你这叫画蛇添角:)谁出的题目啊?扁他!!不过,估计他要你选B!如果不是多选,那你就选B
好了。因为这样刚好符合 1+2+3+4..... 这个题目。这有什么好郁闷的啊?真是。
{
if(n>1)
return x*PowerCalc(x,n-1);
else if(n<0)
return 1.0/PowerCalc(x,-n);
else
return n==0?1.0:x;
}
当n>1时,连续执行n次x*PowerCalc(x,n-1);返回它们的连乘积;
当n<0时,连续执行n次x*PowerCalc(x,n-1);返回它们的连乘积的倒数;你理解一下只考虑n>0时,递归结构的写法:
static double PowerCalc(double x,int n)
{
if(n>1)
return x*PowerCalc(x,n-1);
else
return 1;
}
调用 System.out.println(PowerCalc(2,4));
单步调试查看n的值,就可以发现这个递归实际等价于:
for (int s = 1,i = n; i > 0; --i)
s *= x;
原程序中,考虑到n < 0,就是返回x^|n|的倒数