当前位置: 首页 > news >正文

做批发上哪个网站好/seo网站优化多少钱

做批发上哪个网站好,seo网站优化多少钱,安卓ui用什么软件设计,118论坛网址之家角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。(1) 问题分析:首先判断输入的自然数是不是1&#xff0…

角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。

(1) 问题分析:

首先判断输入的自然数是不是1,如果不是1,那就除2,否则就乘3加1然后继续递归判断

(2) 算法构造

递归体:

if (x % 2 == 0) {//如果能被2整除,偶数

x = x / 2;//除2

} else {//否则为奇数,*3+1

x = 3 * x + 1;

}

System.out.println(“自然数” + x);

count = count + 1;// 次数加1

函数出口:

X=1

(3) 算法实现(详细在源代码以及注释中加以体现)

递归形式:

public int calculation(int x) {

if (1 != x) {//如果x不等于1则进行判断

if (x % 2 == 0) {//如果能被2整除,偶数

x = x / 2;//除2

} else {//否则为奇数,*3+1

x = 3 * x + 1;

}

System.out.println("自然数" + x);

count = count + 1;// 次数加1

calculation(x);// 递归调用

}// 如果等于1返回count

return count;

}

非递归形式:

public int calculation1(int x) {

while(1!=x) {//利用while循环,如果x不等于1则进行判断

if(x%2==0) {//如果能被2整除,偶数

x=x/2;//除2

}else {

x=3*x+1;//否则为奇数,*3+1

}

System.out.println("自然数"+x);

count=count+1; //次数+1

}

return count;

}

(4) 测试结果:

运行截图:

源代码

import java.util.Scanner;

/**

* @类描述:角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,

* 则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。

* 求经过多少次可得到自然数1

* @类名称:Number

* @创建人:司志杰

* @创建时间:2018年11月18日下午1:08:05

* @修改时间:2018年11月18日下午1:08:05

* @修改备注:起初未用递归方法,改为递归方法,测试非递归方法与递归方法均正常

* @version v1.1

* @mail [email protected]

*/

public class Number {

public static int count = 0;//count 记录次数

public static void main(String args[]) {

Scanner sca = new Scanner(System.in);

while (true) {

try {

System.out.println("请输入自然数");

int x = sca.nextInt();

if (x >= 0) {//自然数大于等于0,增加判断

int count=new Number().calculation(x);//调用递归方法,传入键盘输入的自然数,返回count次数

//int count=new Number().calculation1(x);//调用非递归方法,传入键盘输入的自然数,返回count次数

System.out.println("经过次数为" + count);//打印次数

return;//跳出循环

} else {

System.out.println("您的输入不合法,重新输入");

}

} catch (Exception e) {

// TODO: handle exception

System.out.println("您的输入不合法");

break;

}

}

}

/**

*

* @描述:采用非递归方法 ,传入键盘输入的自然数,利用循环计算,返回次数

* @方法名: calculation1

* @返回类型 int

* @创建人szj

* @创建时间 2018年11月18日下午1:28:15

* @修改人 Administrator

* @修改时间 2018年11月18日下午1:28:15

* @修改备注 非递归方法

*/

public int calculation1(int x) {

while(1!=x) {//利用while循环,如果x不等于1则进行判断

if(x%2==0) {//如果能被2整除,偶数

x=x/2;//除2

}else {

x=3*x+1;//否则为奇数,*3+1

}

System.out.println("自然数"+x);

count=count+1; //次数+1

}

return count;

}

/**

* @描述:采用递归的方法,传入键盘输入的自然数,返回次数

* @方法名: calculation

* @return count次数

* @返回类型 int

* @创建人 szj

* @创建时间 2018年11月18日下午1:27:41

* @修改人 Administrator

* @修改时间 2018年11月18日下午1:27:41

* @修改备注 利用递归形式

*/

public int calculation(int x) {

if (1 != x) {//如果x不等于1则进行判断

if (x % 2 == 0) {//如果能被2整除,偶数

x = x / 2;//除2

} else {//否则为奇数,*3+1

x = 3 * x + 1;

}

System.out.println("自然数" + x);

count = count + 1;// 次数加1

calculation(x);// 递归调用

}// 如果等于1返回count

return count;

}

}

相关文章: