你好,下面我给出算法思想及其实现:
成都创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、网站设计、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的临江网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!
public class Divide {
/*
* 首先我们要理解计算机是怎么做除法的,计算机只能进行加法和加法运算
* 所以我们用减法去模拟除法运算
* 这里为了简单,只演示整数的相除运算
* 浮点数预算同理,就是控制精度问题
*/
/*
* param a 被除数
* param b 除数
* 返回值 商
*/
public static int divide(int a, int b){
if(a0 || b0){
throw new ArithmeticException("参数必须为非负整数") ;
}
if(b == 0){
throw new ArithmeticException("除数不能为0") ;
}
a -= b ;
if(a = b){ //这里就是控制精度,整数的比较简单
return divide(a,b) ; //递归调用
}
return a;
}
public static void main(String[] args) {
System.out.print("13 / 5 = " + divide(13,2) );
}
}
public static void main(String[] args) {
Test test = new Test();
test.addNum();
}
private int num = 0;
public void addNum() {
num++;
if(num==10){
System.exit(0);
}else{
System.out.println(num);
addNum();
}
} 一个 很简单的程序 ! 其实迭代很简单 就是 判断一些条件 然后 自己调用自身!就行了
public class ReWriteByRecu {
private String str = "姐姐的性格说好听了是温婉贤淑,说难听了是懦弱不争,一天时间里总是要花半天念经。";
private String[] words = {"性格","温婉","难"};
private int[] slop = {5,6,10};
private int count = 0;
private void method2(int index,int loop){
if(loop = words.length)
{
count++;
System.out.println("count:"+count);
return;
}
int index1 = index + words[loop].length();
int index2 = str.indexOf(words[loop], index);
if(index2 != -1 (index2-index1) = slop[loop])
{
System.out.println("loop:"+loop+"key:"+words[loop]+"index:" + index2);
loop++;
method2(index2,loop);
}
}
public void method1(String sub){
int index=0;
while((index = str.indexOf(sub,index))!=-1) {
index = index + sub.length();
method2(index,0);
}
}
public static void main(String[] args){
ReWriteByRecu rw = new ReWriteByRecu();
rw.method1("姐");
}
}
java.lang.StackOverflowError 是递归太深的意思 !通过报这个错是你的递归写错了!
就是这里
else{
return fun(x)+fun(x-1);
}
你fun(x)里面又调用 f(x)这样就会无限递归下去!自然报错
不知道你想要怎么的效果
照你的意思应该是 fab 数列 那应该是 return fun(x-1)+fun(x-2);
import java.util.*; //导包
public class IterableClass implements IterableString{ //创建一个类,实现接口
String[] pets={"Cat","Cymric","Dog","Manx","Mutt","Pug","Rabit","Rat"};//声明字符串数组
public IteratorString iterator(){//iterator方法,空参,返回值类型是IteratorString
return new IteratorString(){//返回一个匿名内部类对象,即IteratorString接口的子类匿名对象
private int index=0;
public boolean hasNext(){ //hasNext方法,空参,返回值是boolean类型
return indexpets.length; //返回布尔值,由index和字符串数组pets的长度比较结果来判断
}
public String next(){// 重写next方法,空参,返回值是String类型
return pets[index++];//返回一个String数组pets的元素,索引是index++(返回自增前的值,返回后,自增1)
}
public void remove(){// 重写remove方法,空参,没有返回值
throw new UnsupportedOperationException();//抛出一个异常对象
}
};
}
public static void main(String[] args){//main方法,程序执行的入口
for(String p:new IterableClass()){//增强for遍历,遍历IterableClass类的对象(数组),底层是用迭代器遍历,调用的是重写后的hasNext和next方法
System.out.println(p+" ");//换行打印数组的元素
}
}
}
=============
for(String p:new IterableClass()){
System.out.println(p+" ");
}
相当于:
IteratorString itr=new IterableClass().iterator();
while(itr.hasNext()){
String p = itr.next();
System.out.println(p+" ");
}