精华内容
下载资源
问答
  • gcd算法需要注意两件事情 1.算法的正确性。 答:证明如上 2.算法的终止条件的证明(为什么终止条件一定b==0?) 答:

    在这里插入图片描述
    gcd算法需要注意两件事情
    1.算法的正确性。
    答:证明如上

    2.算法的终止条件的证明(为什么终止条件一定是b==0?)
    答:在这里插入图片描述
    在这里插入图片描述
    也可以这么理解:对于两个数字a,b,他们的最大公因子要么是1 (互素),要么大于1,因为余数是越来越小的,所以如果最后a%b == 0 ,那么直接return a%b即可,如果不是,因为这两个数字是固定的,所以最后a%b一定可以到 1(因为余数一定是最大公因数的倍数),

    此时这个就变成了gcd(c,c-1)即为1
    所以得证

    展开全文
  • 神,是什么? 其实,它就是一种用来试图解释一切逻辑悖论工具。   原始人类面对他们不能解释事物,用神灵来解释这一切。 而当人类发展出现代科学之后,面对不能解释事物,使用“基于实证逻辑体系”(科学)...
    今天看《攻壳机动队》,突然想清楚了一个思索了很久的问题:

    神,是什么?

    其实,它就是一种用来试图解释一切逻辑悖论的工具。

     

    原始人类面对他们不能解释的事物,用神灵来解释这一切。

    而当人类发展出现代科学之后,面对不能解释的事物,使用“基于实证的逻辑体系”(科学)来解释事物。

    可是,任何公理化逻辑系统,都必然存在着悖论(哥德尔不完备性定理)。这是它的必然缺陷。

    怎样才能避免悖论?显然,我们必然需要跳出这一个公理化逻辑系统。

     

    悖论无处不在,人每天都会碰到。可是大多数人都活得好好的,为什么呢?

    在面对理发师悖论(自涉自否定问题,如“我说的这句话是错的”),计算机会陷入死循环。可是人类不会,为什么呢?

    因为他们有一个万能工具:

    看!那个愚蠢的人类被“我说的这句话是错的”给绕进去了!

    看!他/她已经晕了!

    看!他不晕了,为啥?

    人:啊啊啊晕了(((φ(◎ロ◎;)φ))),想不清楚,先不想了。

    简而言之,大脑通过一种自我保护机制(重复处理时间过长,则搁置问题)来解决的悖论。你要是说:“这种也根本不算‘解决’问题啊?”请记住,这是一种“非公理化逻辑系统”,它没有从逻辑上“解决”问题,但是它确实“解决”了这个问题。

     

    而“神”,是另一种解决思路。

    它仍然是一种逻辑体系,所以,我可以用伪代码程序来描述它。

    我们想想,人一般是怎样解释问题呢?

    首先,人会在记忆(大脑、网络、书籍等)中检索资料,如果找到了,那么结论就得到了。如果没有,那么按照科学方法,科学家会通过实验、推理等方法来扩大知识库,根据结论来再次尝试解决问题……循环下去,直到解决为止。

    用伪代码描述一下:

     

    结论 解释问题(命题)
    {
        if(搜索当前知识库()==没找到)
       {
            做实验来扩大知识库();
            根据当前知识进行推理来扩大知识库();
            解释问题(命题);//递归
       }
       else
       {
           return 结论;
       }
    }

    可见,这是一个递归函数。

    一个递归函数,必然会有终止条件,否则必然无限循环而崩溃。

    对于无悖论问题,总能通过做实验+推理最终得出结论。

    可是,对于悖论来说,无法通过做实验+推理获得结论,所以必然无限循环下去。

    而神,解决了这个问题。

     

    什么是神?用计算机的语言来说,神是递归函数的终止条件。对于神来说:

     

    结论 神(命题)
    {
       返回 真;
    }

     

    给出任意命题,它都能解释。

    写得完整一点,就是:

     

    结论 解释问题(命题)
    {
        if(搜索当前知识库()==没找到)
       {
           把这个问题归结为神的意志或者神的创造并添加到知识库();
            解释问题(命题);//递归
       }
       else
       {
           return 结论;
       }
    }
    

     

    所以,想要用“上帝能不能创造一个自己也举不起来的石头”来反驳狂信徒,是根本无效的。因为他们根本不需要逻辑,当碰到解释不通的事情,那就直接归结到神的意志上面去,一切问题都能解释。

    比如,爱思考的约翰:“上帝能不能创造一个自己也举不起来的石头呢?”

    牧师:“当然可以,神无所不能!”

    爱思考的约翰:“那万能的上帝为什么连一个石头都举不起来?”

    牧师:“神当然能举起来的。神无所不能”

    爱思考的约翰:“那神到底能不能举起石头?”

    牧师:“当神想创造出这个石头的时候,他就能创造出来。当神想要举起它时,他就能举起来。”

    爱思考的约翰:“……”

     

    所以,从这个角度来说,悖论永远不能被科学所消灭,所以宗教永远有着生存空间。(也正因为科学没有完美,所以科学永远能够进步)

    包赚不赔的买卖!难怪古今中外那么多人热衷于搞这个。难怪为了这个打得不可开交!

    可是,按照奥卡姆剃刀——“如无必要,勿增实体”。

    要是我知道,神就是一个万用递归函数。

    我也会用啊,多简单!既不用理解那些几千年前或者这些年写下的比微积分还厚的书,也不用跑去花掉打游戏的时间去做礼拜,不用看着猪肉/牛肉/啥啥啥杂七杂八的肉而不能吃,更不需要看着漂亮妹子搔首弄姿而目不斜视老僧入定假装不举……

    嗯,我还是愿意做·爱·做·的·事。

    MAKE LOVE ,NOT WAR!GODWILL SOLVE THE PROBLEM FOR ME!

    展开全文
  • 但是如果没终止条件会造成死循环,所以递归代码里要有结束自调自条件。接下来通过一个案例来学习如何使用递归算法计算自然数之和,如例Example1.java。public class Example1 {public static void main(Stri...

    java递归是什么意思,java递归怎么用?程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。但是如果没终止条件会造成死循环,所以递归代码里要有结束自调自的条件。接下来通过一个案例来学习如何使用递归算法计算自然数之和,如例Example1.java。

    public class Example1 {

    public static void main(String[] args) {

    int sum=getsum(4); //调用递归方法,获得1~4的和

    System.out.println(sum=+sum); //打印结果

    }

    //下面的方法使用递归实现求1~n的和

    public static int getsum(int n) {

    if(n==1){

    //满足条件,递归结束

    return 1;

    }

    int temp=getSum(n-1);

    return temp+n;

    }

    }

    运行结果为:

    sun = 10

    Example1.java中,定义了一个 getSum()方法用于计算1~n之间自然数之和。例程中的12行代码相当于在 getSum()方法的内部调用了自身,这就是方法的递归,整个递归过在n==1时结束。整个递归过程中 getsum()方法被调用了4次,每次调用时,n的值都会递减。当n的值为1时,所有递归调用的方法都会以相反的顺序相继结束,所有的返回值会进行累加,最终得到结果10。

    使用递归时需要注意的问题。

    【1】递归就是方法里调用自身。

    【2】在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。

    【3】递归算法代码显得很简洁,但递归算法解题的运行效率较低。所以不提倡用递归设计程序。

    【4】在递归调用的过程中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等,所以一般不提倡用递归算法设计程序。

    【5】在做递归算法的时候,一定把握出口,也就是做递归算法必须要有一个明确的递归结束条件。这一点是非常重要的。其实这个出口就是一个条件,当满足了这个条件的时候我们就不再递归了。

    喜欢 (0)or分享 (0)

    展开全文
  • 什么是递归

    2021-02-23 13:38:57
    递归就是循环递归就是循环递归就是循环 ... 递归终止条件 n == 1 #include <stdio.h> #include <stdlib.h> #include <time.h> // 直接或是或是间接调用自己情形,就递归调用。r

    递归可以是循环

    能用循环做的,就能用递归做,在算法比赛中,一般只写递归,不写循环

    循环 for (起始条件;循环终止条件;循环条件变化 ) === 》
    递归:递归起始条件: func_recursive(n); ;有使递归趋于结束的语句:func_recursive(++n) ; 递归终止条件 n == 9

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    // 直接或是或是间接调用自己的情形,就递归调用。recursive
    // 递归,是比较接近自然语言特性的一种调用方式。递归必须要用合理的出口,不然会挂掉
    
    
    //循环 === 》  递归:递归起始条件:func_recursive(n)  有使递归趋于结束的语句:func_recursive(++n)     递归终止条件   n == 9
    
    
    int func_recursive(int n)
    {
        if(n == 9)
        {
            printf("%d \n",n) ;
            return 0;
        }
        else
        {
            printf("%d \n",n) ;
            return func_recursive(++n);
        }
    }
    
    
    int main()
    {
    
        // for循环
        for (int i =0;i<10;i++) {
            printf("%d \n",i) ;
        }
    
        printf("**********一样一样的*****************\n");
    
        // 迭代
        int n = 0;
        int ret = func_recursive(n);
    
        return 0;
    }
    
    
    
    
    

    在这里插入图片描述


    递归和循环,有共同的特点,有起点,有终点,重复作同样的事情。

    所以很多情况,两者是可以相互转换的。

    如果上升一下理论高度,作一个重复面有明确起点和终点的事,有递归和迭代两种选择。

    循环其实就是一种迭代。

    递归的方式,写法比较简洁,符合正常逻辑,但代码理解难度大,内存消耗大(易导致栈溢出)

    所以能用迭代(lterative)解决的问题,不要用递归来完成。


    展开全文
  • 简单来说,循环有去无回,而递归有去有回(因为存在终止条件)。 def fib(x): if x < 2: return 0 if x == 0 else 1 # 当x > 2时,开始递归调用fib()函数: return fib(x - 1) + fib(x - 2) print...
  • 题型归纳总结 在做树的问题时,发现一类问题很相似,他们都是可以使用dfs的方法,对树进行递归遍历,并计算某种树的统计值(也就是树的某种特征值,) dfs递归左右子树得到左子树和右子...递归的终止条件是什么? 二叉
  • 欢迎阅读我个人博客,有更好排版和文章:https://pushy.site ...还有你从两面相对镜子中看到画面,其实都抽象出来的递归现象,但是严格来说并不是递归,因为会一直重复下去,没有终止条件,那就称...
  • ``` class Solution: def canJump(self, ...两个问题:1为什么我DFS函数没有返回TRUE ,返回的是None 2如果按照网上方法在 DFS(nums[i:]) 前加上return 为什么i不会循环到2这个值,只能1就停止了?
  • 其实这个电影讲的就是个递归的例子,人做梦一层一层的进入了多重梦境,然后达到某种条件时,梦就会中断。递归就是同一个事物不断地重复进入到同一种状态,当达到某种条件时,这种状态就会终止,跳出来。 废话不多说...
  • 相同点:递归和迭代都循环一种。 不同点: 1、程序结构不同 递归是重复调用函数自身实现循环。 迭代函数内某段代码实现循环。 其中,迭代与普通循环区别...递归循环中,遇到满足终止条件的情况时逐层...
  • (1)边界条件:确定递归到何时终止,也称为递归出口。 (2)递归模式:大问题如何分解为小问题,也称为递归体。递归函数只有具备了这两个要素,才能在有限次计算后得出结果 。 可折叠树形菜单 类似于: ...
  • 什么是递归一、递归与迭代递归图例:1、定义1.1、递归1.2、迭代2、构成递归需具备的条件3、递归与迭代(循环)区别与联系:4、递归与迭代(循环)优缺点:4.1、递归优:缺:4.1、迭代(循环)优:缺:二、代码1...
  • 一、递归对于我个人而言 有人说,递归是一种优雅问题解决办法,有人说,递归是一种算法或者一种编程技巧,其实无论别人怎么说,...每个递归函数都有基线条件和递归条件两个部分:基线条件又可以理解成是终止条件,...
  • 递归算法中递是"去"的意思, 归是"回"的意思, ...1、整个递归的终止条件是什么? 2、应该返回给上一级的的返回值是什么? 3、一级递归要做什么?(重复逻辑) 其实2可以和3合并: 1.递归终止条件 2.把问题规模缩小 ...
  • 递归

    2020-08-09 16:47:05
    递归,就是在运行的过程中调用自己。 构成递归需具备的条件: 子问题须与原始问题为同样的事,且更为简单; 不能无限制地调用本身,须有个出口,...找整个递归的终止条件:递归应该在什么时候结束? 找返回值:应该给
  • 递归的理解以及怎么写递归程序

    千次阅读 2019-05-28 22:43:23
    1.一定要搞清楚当前你的递归程序功能是什么,以及需不需要返回值,如果需要,则返回是什么,如果对当前递归程序要完成功能模棱两可、一知半解,那么逻辑肯定混乱,也就不容易写出正确的递归程序。...
  • 简述递归的执行过程

    2021-03-30 14:31:01
    递归是计算机科学中一个非常重要的概念, 也是程序设计中一种常用的问题求解策略. 问题: 递归求解问题的基本思想是什么? 递归是程序设计中一种常用的问题求解策略, 它的... 递归的基本条件也称为递归的终止条件,...
  • 递归章节 一.什么是递归 递归:简单的讲,就是定义一个过程或函数时出现调用本过程或本函数就称为递归。 典型的例子: ...二....(1) 从上例就可以看出,递归需要终止递归的结束条件。 (2)...
  • 递归与非递归的转变

    千次阅读 2015-11-23 14:00:59
    一、什么是递归 递归指某个函数直接或间接的调用自身。问题的求解过程就是划分成许多相同性质的子问题的求解,而小问题的求解过程可以很容易的求出,这些子问题的解就构成里原问题的解了。 二、递归的几个特点 ...
  • 递归的理解

    2021-01-25 17:29:03
    还有你从两面相对镜子中看到画面,其实都抽象出来的递归现象,但是严格来说并不是递归,因为会一直重复下去,没有终止条件,那就称为死循环了。有关递归和死循环异同我们之后会说到,那么现在先来了解一下...
  • 递归就是程序反复调用自身,这说明它每一级的功能一样的,因此我们...找整个递归的终止条件:递归应该在什么时候结束? 找返回值:应该给上一级返回什么信息? 本级递归应该做什么:在这一级递归中,应该完成什么...
  • 方法的递归

    2021-04-05 22:55:31
    也就是说,满足递归时,应满足方法自己调用自己,还要有一个趋近于终止的条件递归执行过程 import java.util.Scanner; public class textDemo { public static int fac(int n){ if(n == 1){ return 1; ..
  • 什么是递归? 递归需要满足哪三个条件: 一个问题的解可以分解为几个小问题的解 ...关键写出递推公式,并找到递归终止条件,最后将递推公式和递归终止条件翻译成代码 编写递归代码需要注意的事项? 递归的深度...
  • 递归的几种形式

    2020-11-03 09:34:16
    文章目录递归的几种形式前言一、递归是什么?二、递归三要素:三、递归算法编程模型应用总结## 前言 : 一直觉得递归很难理解,刚学的时候总分不清怎么调用,在这里为大家分享下我学习递归时的笔力 一、递归...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 421
精华内容 168
关键字:

递归的终止条件是什么