gpt4 book ai didi

java - 给定 k,使用递归求几何和

转载 作者:行者123 更新时间:2023-12-02 04:34:50 28 4
gpt4 key购买 nike

import java.util.Scanner;


public class GeometricSumFromK {


public static int geometricSum(int k,int a)
{

if(k == 0)

return 1;

a = a*2;
return 1/a + geometricSum(k-1, a);

}


public static void main(String[] args) {
// TODO Auto-generated method stub

Scanner s = new Scanner(System.in);
System.out.println("enter k");
int k = s.nextInt();
int a = 1;
System.out.println(geometricSum(k,a));


}

}

对于给定的 k,我如何找到几何总和,例如使用递归计算 1 + 1/2 + 1/4 + 1/8 + ... + 1/(2^k)目前,每个 k 值都显示 1。

最佳答案

你做错了几件事:

  • 该方法应返回 double 而不是 int
  • 当你执行 1/a 并且没有显式地将其转换为 float/double 时,默认结果将是 int (这是 java 中整数操作数之间算术运算的默认类型,如果没有显式转换为其他值) )。这意味着它采用结果的整数部分(在本例中始终为 0,因为 1 始终小于 a 的任何值)。这意味着结果 1 是因为您显式返回 1 的情况。

你应该做这样的事情

public static float geometricSum(int k,int a)
{

if(k == 0)

return 1;

a = a*2;
return ((float)1/a) + geometricSum(k-1, a);

}

关于java - 给定 k,使用递归求几何和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30968810/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com