码迷,mamicode.com
首页 > 其他好文 > 详细

递归思想作业

时间:2017-10-13 23:50:37      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:函数实现   char   回文字符串   二维数组   color   system.in   程序流程图   bool   汉诺塔   

作业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);
}
}

结果

技术分享

递归思想作业

标签:函数实现   char   回文字符串   二维数组   color   system.in   程序流程图   bool   汉诺塔   

原文地址:http://www.cnblogs.com/lqs244/p/7663605.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!