角谷定理python输出变化过程_角谷定理。
角谷定理。输入一个自然数,若为偶数,则把它除以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输出变化过程_角谷定理。相关推荐
- 角谷定理python输出变化过程_日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。猜想的内容...
匿名用户 1级 2010-12-26 回答 是指对於每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2,如此循环,最终都能够得到1. 取一个数字 如n = 6,根据上述公式,得出 ...
- 角谷定理python输出变化过程,Python 100例——第十章----定理与猜想
# -*- coding: cp936 -*- from math import sqrt import random #第十章----定理与猜想 #<c趣味编程>78-85题 #21:5 ...
- 怎么利用python输出星座符号_怎么利用python输出星座
怎么利用python输出星座?下面给大家带来具体方法: 思路: 1.定义一个get_constellation(month,date)函数,来获取出生日期. 2.创建一个dates和constella ...
- Susan角点检测python实现 (边缘检测、角点检测、重心计算、非极大值抑制)
Susan角点检测(边缘检测.角点检测.重心计算.非极大值抑制) 写在前面 黄宁然--看过你看过的算法,觉得好难. 参考文献镇楼 [1]https://blog.csdn.net/tostq/arti ...
- python的执行过程_在交互式环境中执行Python程序过程详解
前言 相信接触过Python的伙伴们都知道运行Python脚本程序的方式有多种,目前主要的方式有:交互式环境运行.命令行窗口运行.开发工具上运行等,其中在不同的操作平台上还互不相同.今天,小编讲些Py ...
- python输出等腰三角形代码_酷呆了!Python开发web应用的一些中级技巧
上一篇文章,介绍了如何用python和flask来开发web应用,是不是觉得用python做web应用很简单? (1)URL如何传递参数? (2)网页如何重定向? 阅读前,还是希望大家能告诉我,关于您 ...
- python模块下载过程_常用的python模块及安装方法
bsddb3:BerkeleyDB的连接组件 Cheetah-1.0:我比较喜欢这个版本的cheetah cherrypy:一个WEB framework ctypes:用来调用动态链接库 DBUti ...
- python特征选择的过程_【来点干货】机器学习中常用的特征选择方法及非常详细的Python实例...
花费了很长时间整理编辑,转载请联系作者授权,违者必究. 特征选择(Feature selection)是在构建预测模型的过程中减少输入变量的一个过程.它是机器学习中非常重要的一步并在很大程度上可以提高 ...
- python输出星号等腰三角形_星号三角形Python(带输入)(Asterisk Triangle Python (with input))...
星号三角形Python(带输入)(Asterisk Triangle Python (with input)) 我正在做一个关于python 3的初学者课程,并且必须形成一个星号三角形,输出如下. 星 ...
最新文章
- spoj Find Log
- 集合到文件改进版【应用】
- acwing199.余数之和(除法分块)
- matlab内维尔差值代码,计算方法上机练习数值积分(包括两次作业).PDF
- python中字典和集合的使用
- make clean、make mrproper、make distclean的区别【转】
- XP不能访问WIN7资源
- 快速压缩Word文档的小妙招
- 华为交换机和路由器命令和trunk
- 零基础转行软件测试有前途吗?为什么说软件测试是极具发展前途的
- bps、Bps、pps的概念和区别
- 数据库连接驱动介绍及参数简单设置
- windows 7 iso镜像刻录到U盘后选择安装的版本
- 浅谈framework之PowerManagerService
- 002.光流传感器(ADNS0380版)使用说明
- MySQL分区(Partition)功能
- Home Assistant系列 -- 接入手机摄像头做实时监控和人脸识别
- OpenGLSL中处理HDR.ToneMapping(HLG)
- 【K210】人脸口罩识别
- 35岁程序员转行,跟老婆一起做外贸,半年净利润70多万
热门文章
- 电脑开机黑屏一串英文_电脑开机黑屏,还出现一串英文字母。
- java项目统一打印入参出参等日志
- 使用NFC模拟校园卡门禁功能 【Mac, Windows, Android, 手环】
- 关于软件延时指定us(1T和12T)
- 嵌入式中断:如何正确设置中断优先级 (万字总结) - 基于Cortex-M和FreeRTOS
- 使用python pip安装PyQt5时遇到的不能安装d3dcompiler_47.dll错误
- 2010年度CSDN十大资讯 (编辑推荐)
- 元宇宙:超越现实体验,Meta-Architect能设计什么?
- 【DL with Pytorch】第 3 章 :使用 DNN 的分类问题
- oracle amm和asmm,在Oracle中,什么是ASMM和AMM?