[quote]简单计算两个非负整数a*b的算法[/quote]
1.递归方式:a*b=b+(a-1)*b 表示a个b相加,算法如下:
FUNC mul1(a,b:integer):integer:
IF a=0 THEN RETURN(0)
ELSE RETURN(b+mul1(a-1,b))
ENDF;{mul1}
2.迭代方式:a*b=a个b之和
FUNC mul2(a,b:integer):
integer;
z:=0;
FOR i:=1TO a DO
z:=z+b;
RETURN(z)
ENDF;{mul2}
[quote]java代码实现[/quote]
1.递归方式:a*b=b+(a-1)*b 表示a个b相加,算法如下:
FUNC mul1(a,b:integer):integer:
IF a=0 THEN RETURN(0)
ELSE RETURN(b+mul1(a-1,b))
ENDF;{mul1}
2.迭代方式:a*b=a个b之和
FUNC mul2(a,b:integer):
integer;
z:=0;
FOR i:=1TO a DO
z:=z+b;
RETURN(z)
ENDF;{mul2}
[quote]java代码实现[/quote]
public class RecursionTest {
/**
* @param args
*/
//递归方式
public int mul1(int a,int b){
if (a==0)
return 0;
else
return b+mul1(a-1,b);
}
//迭代方式
public int mul2(int a,int b){
int z=0;
for(int i=1;i<=a;i++){
z+=b;
}
return z;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
RecursionTest tt = new RecursionTest();
int s1=tt.mul1(15, 15);
System.out.println("递归方式s1="+s1);
int s2=tt.mul2(15, 15);
System.out.println("迭代过程s2="+s2);
}
}