A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wodenhaowzg 中级黑马   /  2014-1-17 21:40  /  1878 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 wodenhaowzg 于 2014-1-18 10:39 编辑

题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数) 什么是指针函数?

8 个回复

倒序浏览
目测JAVA没有指针的概念。
指针函数返回类型是某一类型的指针
想要了解指针这个东西要补习一下C语言。这个东西很好用,也很危险。
这题所谓的指针函数是递归吧。
回复 使用道具 举报
可以用递归啊,不断调用-2得到前一个分数的分母
回复 使用道具 举报
一、指针函数就是引用函数的意思。这是一道求奇数的倒数的前n项和,和偶数的前n项和的题目。
二、你可以建立一个专门的类(类一)。在类中建立两个方法,一个用于求奇倒数的和,一个用于求偶倒数的和。
三、再建立一个类(类二),这个类中是主方法,在这个类中建立类一的对象,去调用类一的两个方法。
回复 使用道具 举报
既然大家都是纸上谈兵我也跟这搀和一下吧,以前学C++的时候也遇到过这个东东,java我还没学到指针函数呢,所以就不班门弄斧了
回复 使用道具 举报
本帖最后由 0.o心动o.0 于 2014-1-18 00:36 编辑

首先说一下java是不存在指针的概念的
用java解这道题用了俩种方法

普通的方法 方法一:
  1. import java.util.*;
  2. public class Test {
  3.         
  4.         public static void main(String[] args) {
  5.                 // TODO Auto-generated method stub
  6.          System.out.println("请输入一个正整数:");
  7.          Scanner sc= new Scanner(System.in);
  8.          double num=sc.nextInt();
  9.          String str="";
  10.          double result=0;
  11.          while(true){
  12.                 str="1/"+(int)num+"+"+str;
  13.                 result+=1/num;
  14.                 num=num-2;
  15.                 if(num<1)break;
  16.          }
  17.       
  18.          System.out.println(str.substring(0,str.length()-1)+"="+result);
  19.         }     
  20. }
复制代码

既然你提到了递归 我就用递归求了一下结果
方法二:
  1. import java.util.*;

  2. public class Test {
  3.         public static void main(String[] args) {
  4.                 // TODO Auto-generated method stub
  5.          System.out.println("请输入一个正整数:");
  6.          Scanner sc= new Scanner(System.in);
  7.          double num=sc.nextInt();
  8.          String str="";
  9.          double result=f(num);//这里运用递归函数求的结果
  10.          while(true){
  11.                 str="1/"+(int)num+"+"+str;
  12.                 num=num-2;
  13.                 if(num<1)break;
  14.          }
  15.          System.out.println(str.substring(0,str.length()-1)+"="+result);
  16.         }
  17.       public static double f(double num){
  18.               if(num==1.0||num==2.0) return 1/(num);
  19.                 return f(num-2)+1/num;
  20.        }      
  21. }
复制代码



代码没有写注释 只提供一种思路,希望楼主能自己看懂 对自己思考问题会有提高
回复 使用道具 举报
0.o心动o.0 发表于 2014-1-18 00:31
首先说一下java是不存在指针的概念的
用java解这道题用了俩种方法

谢谢回答 受教了
回复 使用道具 举报
0.o心动o.0 发表于 2014-1-18 00:31
首先说一下java是不存在指针的概念的
用java解这道题用了俩种方法

哥们儿,看了下你代码,不过还是顺手提个醒,用IO的东西一定要记得关闭,否则只开不关,多了的话会浪费大量的资源
回复 使用道具 举报
李跃峰 发表于 2014-1-18 17:52
哥们儿,看了下你代码,不过还是顺手提个醒,用IO的东西一定要记得关闭,否则只开不关,多了的话会浪费大 ...

好的,多谢提醒
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马