查看所有50道基础算法题请看:
Java的50道基础算法题
package Demo39Pointer_Function;
//首先定义一个接口
@FunctionalInterface
public interface Sums{
public double sum(int n);
}
package Demo39Pointer_Function;
// 定义一个类,包含两个方法,分别计算n为奇数和偶数的情况
public class Sum_Do {
public double Sum_odds(int n){
double i = 1;
double sum = 0;
while (i<=n){
sum = sum + 1/(2*i-1);
i++;
}
return sum;
}
public double Sum_Even(int n){
double i = 1;
double sum = 0;
while(i<=n){
sum = sum + 1/(2*i);
i++;
}
return sum;
}
}
package Demo39Pointer_Function;
// 定义一个接口的实现类,计算奇数情况
public class Sum_odds implements Sums {
@Override
public double sum(int n) {
return new Sum_Do().Sum_odds(n);
}
}
package Demo39Pointer_Function;
//定义一个接口实现类,计算偶数情况
public class Sum_Even implements Sums {
@Override
public double sum(int n) {
return new Sum_Do().Sum_Even(n);
}
}
package Demo39Pointer_Function;
//定义测试类,获取用户输入,计算结果并打印
import java.util.Scanner;
/**
* 编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数1/1+1/3+…+1/n(利用指针函数) 。
*/
/*
分析:哎呦,我都没学过什么是指针函数,怎么分析嘛,网上搜了些东西看了半天,稀里糊涂的,就这么做吧,以后搞懂了,再来完善。
*/
public class Pointer_Function {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入数字n: ");
int n = sc.nextInt();
Sum_Do sd = new Sum_Do();
double sum =0;
if(n % 2 !=0){
sum = new Sum_odds().sum(n);
}else{
sum = new Sum_Even().sum(n);
}
System.out.println("最终的计算结果是:");
System.out.println(sum);
}
}
之前呢,也没有学过函数指针的相关知识,今天在网上找了很多前辈的博客,也看不太懂,有些抽象,不过好像是说Java没有指针函数,只能通过接口的引用来实现类似的功能,这个知识点留待以后学习吧,现在可能还理解不了,如果有大佬愿意,在评论区指点小弟一二吧。