递归思想作业
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归思想作业相关的知识,希望对你有一定的参考价值。
作业1.1:
设计思想:
先计算n!,k!,(n-k!),然偶计算cnk组合数
程序流程图
代码
package 递推;
import java.util.Scanner;
public class 一点一 {
public static void main(String[] arges)
{
double n2=1,k2=1,nk,nk2=1,R;
System.out.println("计算组合数,输入k,n");
Scanner in=new Scanner(System.in);
int K=in.nextInt();
Scanner in2=new Scanner(System.in);
int N=in2.nextInt();
in.close();
in2.close();
nk=N-K;
for(;nk>=1;nk--)
{
nk2=nk2*nk;
}
for(;N>=1;N--)
{
n2=N*n2;
}
for(;K>=1;K--)
{
k2=K*k2;
}
R=n2/(k2*nk2);
System.out.print("组合数是:"+R);
}
}
结果
作业1.2
设计思想
用二维数组和组合数的递推公式计算组合数
流程图
代码
import java.util.Scanner;
public class 一点二 {
public static void main(String[] arges)
{
double[][] C=new double[10][10];
System.out.println("计算组合数,输入k,n");
Scanner in=new Scanner(System.in);
int K=in.nextInt();
Scanner in2=new Scanner(System.in);
int N=in2.nextInt();
in.close();
in2.close();
C[1][0] = C[1][1] = 1;
for (int i = 2; i <=N; i++)
{
C[i][0] = 1;
for (int j = 1; j <= K; j++)
{
C[i][j] = (C[i - 1][j] + C[i - 1][j - 1]);
}
}
System.out.print("组合数是:"+C[N][K]);
}
}
结果
作业1.3
设计思想
递归函数实现逐层计算c(nk)
流程图
源代码
package 递归;
import java.util.Scanner;
public class ggf {
public static void main(String args[])
{
Scanner input=new Scanner(System.in);
int n,k;
System.out.println("请输入组合数公式的n和k:");
n=input.nextInt();
k=input.nextInt();
input.close();
System.out.println("组合结果为"+jieguo(n,k));
}
public static long jieguo(int a,int b)
{
if(b==0)return 1;
else
{
if(a==1)return 1;
else
{
if(a==b)return 1;
else {
return (jieguo(a-1,b-1)+jieguo(a-1,b));
}
}
}
}
}
结果
作业2
实验思想
若移动第n个圆盘,则要先移动第n-1个圆盘,则要先移动第n-2个圆盘......
流程图
代码
package 汉诺塔;
import java.util.Scanner;
public class hfd {
public static void main(String args[])
{
int n;
char A=‘A‘;
char B=‘B‘;
char C=‘C‘;
Scanner input=new Scanner(System.in);
System.out.println("请输入n:");
n=input.nextInt();
input.close();
jiben( n,A,B,C);
}
public static void jiben(int n,char A,char B,char C)
{
if(n==1)
{
yidong(A,1,C);
}
else
{
jiben(n-1,A,C,B);
yidong(A,n,C);
jiben(n-1,B,A,C);
}
}
public static void yidong(char A,int n,char B)
{
System.out.println("第"+n+"个圆盘从"+A+"->"+B);
}
}
结果
作业3
思想
第一个和最后一个比较,如果相同,在第二个和倒数第二个比较......
程序流程图
代码
package 回文数;
import java.util.Scanner;
public class huiwenshu {
public static void main(String args[])
{
System.out.print("输入字符串:");
Scanner input=new Scanner(System.in);
String s=input.next();
input.close();
int i,j;
i=0;
j=s.length()-1;
System.out.println("是否是回文字符串:"+HW(s,i,j));
}
public static boolean HW(String s,int i,int j)
{
if(i==j)
{
return true;
}
else
if((i-1)==j)
{
return true;
}
return (s.charAt(i)==s.charAt(j))&&HW(s,i+1,j-1);
}
}
结果
以上是关于递归思想作业的主要内容,如果未能解决你的问题,请参考以下文章