角谷定理。输入一个自然数,若为偶数,则把它除以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;

}

}

角谷定理python输出变化过程_角谷定理。相关推荐

  1. 角谷定理python输出变化过程_日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容...

    匿名用户 1级 2010-12-26 回答 是指对於每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1. 取一个数字 如n = 6,根据上述公式,得出 ...

  2. 角谷定理python输出变化过程,Python 100例——第十章----定理与猜想

    # -*- coding: cp936 -*- from math import sqrt import random #第十章----定理与猜想 #<c趣味编程>78-85题 #21:5 ...

  3. 怎么利用python输出星座符号_怎么利用python输出星座

    怎么利用python输出星座?下面给大家带来具体方法: 思路: 1.定义一个get_constellation(month,date)函数,来获取出生日期. 2.创建一个dates和constella ...

  4. Susan角点检测python实现 (边缘检测、角点检测、重心计算、非极大值抑制)

    Susan角点检测(边缘检测.角点检测.重心计算.非极大值抑制) 写在前面 黄宁然--看过你看过的算法,觉得好难. 参考文献镇楼 [1]https://blog.csdn.net/tostq/arti ...

  5. python的执行过程_在交互式环境中执行Python程序过程详解

    前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...

  6. python输出等腰三角形代码_酷呆了!Python开发web应用的一些中级技巧

    上一篇文章,介绍了如何用python和flask来开发web应用,是不是觉得用python做web应用很简单? (1)URL如何传递参数? (2)网页如何重定向? 阅读前,还是希望大家能告诉我,关于您 ...

  7. python模块下载过程_常用的python模块及安装方法

    bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUti ...

  8. python特征选择的过程_【来点干货】机器学习中常用的特征选择方法及非常详细的Python实例...

    花费了很长时间整理编辑,转载请联系作者授权,违者必究. 特征选择(Feature selection)是在构建预测模型的过程中减少输入变量的一个过程.它是机器学习中非常重要的一步并在很大程度上可以提高 ...

  9. python输出星号等腰三角形_星号三角形Python(带输入)(Asterisk Triangle Python (with input))...

    星号三角形Python(带输入)(Asterisk Triangle Python (with input)) 我正在做一个关于python 3的初学者课程,并且必须形成一个星号三角形,输出如下. 星 ...

最新文章

  1. spoj Find Log
  2. 集合到文件改进版【应用】
  3. acwing199.余数之和(除法分块)
  4. matlab内维尔差值代码,计算方法上机练习数值积分(包括两次作业).PDF
  5. python中字典和集合的使用
  6. make clean、make mrproper、make distclean的区别【转】
  7. XP不能访问WIN7资源
  8. 快速压缩Word文档的小妙招
  9. 华为交换机和路由器命令和trunk
  10. 零基础转行软件测试有前途吗?为什么说软件测试是极具发展前途的
  11. bps、Bps、pps的概念和区别
  12. 数据库连接驱动介绍及参数简单设置
  13. windows 7 iso镜像刻录到U盘后选择安装的版本
  14. 浅谈framework之PowerManagerService
  15. 002.光流传感器(ADNS0380版)使用说明
  16. MySQL分区(Partition)功能
  17. Home Assistant系列 -- 接入手机摄像头做实时监控和人脸识别
  18. OpenGLSL中处理HDR.ToneMapping(HLG)
  19. 【K210】人脸口罩识别
  20. 35岁程序员转行,跟老婆一起做外贸,半年净利润70多万

热门文章

  1. 电脑开机黑屏一串英文_电脑开机黑屏,还出现一串英文字母。
  2. java项目统一打印入参出参等日志
  3. 使用NFC模拟校园卡门禁功能 【Mac, Windows, Android, 手环】
  4. 关于软件延时指定us(1T和12T)
  5. 嵌入式中断:如何正确设置中断优先级 (万字总结) - 基于Cortex-M和FreeRTOS
  6. 使用python pip安装PyQt5时遇到的不能安装d3dcompiler_47.dll错误
  7. 2010年度CSDN十大资讯 (编辑推荐)
  8. 元宇宙:超越现实体验,Meta-Architect能设计什么?
  9. 【DL with Pytorch】第 3 章 :使用 DNN 的分类问题
  10. oracle amm和asmm,在Oracle中,什么是ASMM和AMM?