论文递归函数伪代码

论文递归函数伪代码

问:用递归算法描述Fibonacci数列的伪代码
  1. 答:function i(n){
    if(n == 1 | n ==2){
    return 1;
    }else{
    return i(n-1) + i(n-2);
    }
    }
问:按要求设计递归算法。只需写出伪代码或画流程图,不需语言实现,但算法必须完整清晰。
  1. 答:arrs[100000][100000];
    a[100000];
    f(i,zhi){
    if(i==4){
    arrs[]=a;
    return;
    }
    a[i]=zhi;
    f(i+1,zhi+3);
    f(i+1,zhi+4);
    }
    f(0,0)
    arrs就是结果,并且是排了序的。
  2. 答:开始的程序控制语句的基础练习,如开头:
    酒店与多个循环,分支控制结构,以确定如何在控制台输出三角形,倒三角形,等边三角形,等腰三角形练习,正方形,长方形,平行四边形,菱形,另一个是大多形状。和尽可能从用户输入的参数来完成图形输出程序的适应。
    包装 - 被转移到不同凡响,搜索算法学习练习,如:递归算法,帕斯卡三角形,冒泡,快速插入排序算法,如运动。
    - 以后,你可以学习Swing桌面开发的基本知识。使用Swing良好的设计,进一步学习Java语言来实现各种设计模式,比如Swing是最常见的模式,观察者模式,单例模式,工厂模式,抽象工厂模式,等等。以后有限公司返回了,你可以学到一些知识的J2EE,如JSP,Servlet的,以及一些常用的框架如Hibernate,Spring中,Struts中,TopLink的,ibitas,DWR等上。
    这些只是Java的知识,要想J2EE,还要学习HTML,JS,XML,CSS,AJAX和一些常见的富客户端框架库,如原型,ExtJS的,JQuery的,等。许多
    学习内容,要循序渐进,以达到良好的效果。否则你不会得到一半。需要注意的是学习的过程中必须采取一些好的经验(设计模式是公认的获得经验)学习,所以能迅速提高。
问:试写出求递归函数F(n)的递归算法,并消除递归
  1. 答:你先了解这个函数的作用,结果就是 n*(n/(2^1)*(n/(2^2))*(n/(2^3))*(n/(2^4))……*1
    n*(n/2)*(n/4)*(n/8)*……*1
    while( n >= 0)
    {
    if(n !=0)
    { push();//将n压入栈内
    n = n/2
    }
    else
    {
    push(n+1);//或者是push(1);
    }
    }
    double result = 1;
    while(栈不为空)
    {
    result = result * pop();//取出值并相乘
    }
    printf("%lf",result);
    这个是伪代码哈,自己去实现
  2. 答:递归就是本身调用自己。如n!=n(n-1)!,你定义函数f(n)=nf(n-1)而f(n-1)又是这个定义的函数。这就是递归。
    实现递归。简单说来从未知的推到已知的
    如:3!=3*2!
    2!=2*1!
    1!=1(已知的)
    然后从已知再返回调用给上一层。到你所要求的
    1!=1(已知)
    2!=2*1!=2*1=2
    3!=3*2!=3*2=6
    递归结束
  3. 答://java代码
    import java.util.Stack;
    public class Test5 {
    public static void main(String[] args) {
    for(int n=0; n<=10; n++){
    System.out.println("f(" + n + ")\t=\t" + f(n));
    }
    }
    public static int f(int n){
    if(n == 0){
    return 1;
    }
    int value = 0;
    Stack s = new Stack();
    s.push(1); //f(0)入栈
    for(int i=1; i<=n; i++){
    //计算f(i)的值
    value = i * Integer.parseInt(s.get(i/2).toString());
    s.push(value); //f(i)入栈
    }
    return value;
    }
    }
  4. 答:#include<stdio.h>
    #include<stdlib.h>
    int main()
    {
    int x;
    scanf("%d",&x);
    if(x<0)
    {
    printf("输入错误!程序结束\n");
    exit(0);
    }
    int result=1;
    while(x>0)
    {
    result*=x;
    x/=2;
    }
    printf("F(%d)=%d",x,result);
    return 0;
    }
  5. 答:第二个式子F(n) = nF(n/2),(n>0),其中的n/2是指整除还是实除?如果实除的话,对于大于0的n,递归都不会终止。
论文递归函数伪代码
下载Doc文档

猜你喜欢