帮忙看一道递归题!

sky225566 2009-04-10 12:39:48
1!+2!+3!...+n!用递归,在一个方法中?
...全文
194 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
damnedvi 2009-05-04
  • 打赏
  • 举报
回复
public int method(int i){
if(i==1){
return 1;
}if(i==2){
return 3;
}
return i*(method(i-1)-method(i-2))+method(i-1);
}
SimonYeung 2009-04-11
  • 打赏
  • 举报
回复
//1!+2!+3!...+n!
public class FabPlus {
int index;
long sum = 1;
public long fabPlus(int index) {
if (index == 1) {
return 1;
}
sum += index * fabPlus(index - 1); //sum作为每一次函数fabPlus被调用时的累加器s
return index * fabPlus(index - 1);
}
public static void main(String args[]) {
FabPlus a = new FabPlus();
a.fabPlus(4); //测试1!+2!+3!+4!
System.out.println(a.sum);
}
}
window_xp 2009-04-11
  • 打赏
  • 举报
回复
public static int doFactorial(int n)
{
if (n < 0){ return -1;
}
if (n == 0)
{// 0!=1
return 1;
}
else if (n == 1)
{// 退出递归的条件
return 1; }
else {// 满足进行递归的条件
return n + doFactorial1(n - 1);
}
}
sjkof 2009-04-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 renmms 的回复:]
Java codepublicstaticintdoFactorial(intn)
{if(n<0){return-1;
}if(n==0)
{//0!=1return1;
}elseif(n==1)
{//退出递归的条件return1; }else{//满足进行递归的条件returnn*doFactorial1(n-1);
}
}
[/Quote]

支持
justinavril 2009-04-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 renmms 的回复:]
Java codepublic static int doFactorial(int n)
{
if (n < 0){ return -1;
}
if (n == 0)
{// 0!=1
return 1;
}
else if (n == 1)
{// 退出递归的条件
return 1; }
else {// 满足进行递归的条件
return n * doFactorial1(n - 1);
}
}
[/Quote]
人家是求和哦,不是求阶乘。
lovetysx 2009-04-10
  • 打赏
  • 举报
回复
楼上的只是阶乘
sky225566 2009-04-10
  • 打赏
  • 举报
回复
sum=1!+2!+3!...+n!,在一个方法中实现!
renmms 2009-04-10
  • 打赏
  • 举报
回复
public static int doFactorial(int n) 
{
if (n < 0){ return -1;
}
if (n == 0)
{// 0!=1
return 1;
}
else if (n == 1)
{// 退出递归的条件
return 1; }
else {// 满足进行递归的条件
return n * doFactorial1(n - 1);
}
}
云上飞翔 2009-04-10
  • 打赏
  • 举报
回复
答:
System.out.println(sumF(4));
程序运行结果:33
云上飞翔 2009-04-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 sky225566 的帖子:]
1!+2!+3!...+n!用递归,在一个方法中?
[/Quote]
答:

public static long sumF(long n)
{
if(n==1)return 1;
if(n==2)return 3;
return (n+1)*sumF(n-1)-n*sumF(n-2);
}
岭南笑 2009-04-10
  • 打赏
  • 举报
回复
public class Digui {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
int n = 0;
int sum = 0;
System.out.print("请输入n的值:");
n = new Scanner(System.in).nextInt();
Digui dg = new Digui();
sum = dg.digui(n);
System.out.println(sum);


}

public int digui(int n) {
if(n <= 0) return 0;
int x = 1;
for(int i = 1; i<=n; i++ ) {
x *= i;
}
return x+digui(n-1);
}

}
ldm1011 2009-04-10
  • 打赏
  • 举报
回复
public final class Test {
public static void main(String[] args) {

System.out.println(doFactorial(5).get("sum"));
}


static HashMap doFactorial(int n) {

HashMap map = new HashMap();
if(n == 1) {
map.put("sum", new Integer(1));
map.put("value",new Integer(1));
} else {

int value = Integer.parseInt(doFactorial(n - 1).get("value").toString());
int sum = Integer.parseInt(doFactorial(n - 1).get("sum").toString());
map.put("sum", new Integer(n*value + sum));
map.put("value", new Integer(n *value));
}
return map;
}
}
已经经过测试,结果正确
「已注销」 2009-04-10
  • 打赏
  • 举报
回复
// 把和当参数传进去
public class A{

public static int doFactorial(int n,int sum) {
if (n < 0){
return -1;
}
if (n == 0) {
// 0!=1
return 1;
} else if (n == 1) {
System.out.println(sum+1);
// 退出递归的条件
return 1;
}
else {// 满足进行递归的条件
sum=sum+n*doFactorial(n-1,0);

return n *doFactorial(n - 1,sum);
}
}
public static void main(String [] args){
System.out.println(doFactorial(5,0));
}
}
believeyourself86 2009-04-10
  • 打赏
  • 举报
回复
public static int doFactorial(int n)
{
if(n > 0){
return n * doFactorial1(n - 1);
}
elst if (n == 0)
{
return 1;
}
return -1;
}

public static int doSum(int n)
{
if(n>1)
{
return doSum(n-1)+doFactorial1(n);
}
if(n==1)
return 1;
else
return -1;
}

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧