
数据结构程序设计
东篱把酒黄昏
这个作者很懒,什么都没留下…
展开
-
汉诺塔递归;汉诺塔盘子的移动次数
使用递归模拟汉诺塔的盘子移动过程,计算n个盘子需要移动的次数.原创 2022-04-01 17:17:37 · 1454 阅读 · 0 评论 -
汉诺塔问题
分析假设有三个盘子,和A,B,C三根针,需要把三个盘子从A移动到C,为了把三个盘子移动到C,需要先把两个盘子移动到B,再把最下面的盘子移动到C,而为了把两个盘子移动到B,需要先把一个盘子移动到C,在把下面的盘子移动到B,再把C上的一个盘子移动到B,这样完成了先把两个盘子从A移动到B的操作,最后把A上最下面的盘子移动到C。接着为了把B上的两个盘子移动到C,需要先把一个盘子移动到A,再把最下面的一个盘子移动到C,最后把A上的一个盘子移动到C。完成了把三个盘子从A移动到C。代码package diguif;原创 2021-10-22 14:06:07 · 112 阅读 · 0 评论 -
建立一个m行n列矩阵,找出其中最小的元素所在的行和列,并输出该值及其行,列位置
建立一个m行n列矩阵,找出其中最小的元素所在的行和列,并输出该值及其行,列位置代码package baifenzhi;import java.util.Scanner;public class juzhenzhao {public static void main(String args[]) { int m,n; Scanner sc=new Scanner(System.in); System.out.println("创建一个m行,n列的矩阵,请输入m,n的值:"); m=sc.ne原创 2021-10-21 15:16:23 · 3517 阅读 · 2 评论 -
打印杨辉三角前10行
问题代码package baifenzhi;public class yanghuisanjiao { public static void main(String args[]) { System.out.println("打印杨辉三角前10行:"); int yh[][],j=1;//j用来初始化列 yh=new int[10][];//存储杨辉三角的数组,有十行 for(int i=1;i<=10;i++) {//行 yh[i-1]=new int[j];//第原创 2021-10-21 13:48:41 · 774 阅读 · 0 评论 -
编程对十个整数进行排序
代码package baifenzhi;import java.util.Scanner;public class paixu { static void maopao(int args[]) {//冒泡排序,升序(从小到大) int term; for(int i=0;i<args.length;i++) { for(int m=i+1;m<args.length;m++) { if(args[i]>args[m]) { term=args[m];原创 2021-10-21 13:36:51 · 1955 阅读 · 0 评论 -
计算1!+2!+3!+^+10!,其中阶乘的计算用方法实现
问题计算1!+2!+3!+^+10!,其中阶乘的计算用方法实现代码package diguif;public class jiechenfg {//递归方法求1到10阶乘的和 static long jC(int n) { if(n==1) return 1; else { long sum=0,a=0; a=jC(n-1)*n; sum=sum+a; return sum; } } public static void main(String args[原创 2021-10-14 11:56:13 · 987 阅读 · 1 评论 -
编写一个方法,用来计算并输出:1-1/2+1/3-1/4+1/5-1/6+……-1/50
问题编写一个方法,用来计算并输出:1-1/2+1/3-1/4+1/5-1/6+……-1/50代码package diguif;public class diguif { static double dGF(double n) {//使用递归法 if(n==1) return 1; else { double f=Math.pow(-1, n+1),term=Math.pow(n, -1); return f*term+dGF(n-1); } } public stat原创 2021-10-14 11:34:20 · 1447 阅读 · 0 评论 -
编写两个方法,分别求两个数的最大公约数和最小公倍数
代码package gongyveshu;import java.util.Scanner;public class gongyveshu { static void gys(int a,int b) {//公约数计算 int term1=0,term2=0,flag=0,i=2,m=2;//term1存储a的约数,term2存储b的约数,flag存储a,b共同的约数 if(a%b==0) System.out.println(a+"和"+b+"的最大公约数是"+b); else if(原创 2021-10-14 11:04:40 · 1297 阅读 · 0 评论 -
进制转换问题
进制转换问题问题描述将十进制数N和其他d进制之间进行转换时计算机实现计算的基本问题,解决方案较多,其中最简单的方法是除d取余法,例如,(1348)10=(2504)8。过程如:可以看出,最先产生的余数4是转换结果的最低位,这正好符合栈“LIFO”特性,所以可以用顺序栈来模拟该过程。基本要求对于键盘输入的任意一个非负十进制整数,打印出与其相等的八进制数。由于上述计算过程是从低位到高位顺序产生的八进制数的各个位,再打印输出,而人类习惯,应从高位到低位进行,恰好与计算过程相反。因此可以先将计算过程中原创 2021-06-06 11:48:18 · 493 阅读 · 2 评论 -
生成n位k进制数并将其存储
生成n位k进制数并将其存储分析使用数组存储生成的n位k进制数,从起始串000……00开始,逐次加一,逢k进一。定义两个数组a[100],b[100],一个用于生成串的运算,一个用于存储串。由于逐次加一,逢k进一每次运算方法相似所以适合用递归。代码//递归 #include<stdio.h>int m=0;void fun(int n,int k,int a[],int b[],int x){ if(n==0) { for(int c=0;c<x;c++) {原创 2021-06-05 20:04:12 · 185 阅读 · 0 评论