递归简述

算法小白又来啦~本博客仅用来学习过程中的记忆,写的不好,大佬们勿喷..

递归定义:递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程序中直接或间接调用自身的现象,这种程序调用自身的编程技巧称为递归(rercursion)

所以递归的思想是调用自身,那么一个程序段或函数功能的设计就显得尤为重要,因为毕竟内部还需要调用本身。

举个栗子:

角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。
如:输入22
       输出 22 11 34 17 52 26 13 40 20 10 5 16 8 4 1

代码实现如下:

#include<stdio.h>

void Jg(int *count,int n);

int main(){
    int count=0;
    Jg(&count,22);
    printf("%d",count);
}

void Jg(int *count,int n){
    if(n!=1){
        if(n%2==0){
            n=n/2;
        }
        else{
            n=n*3+1;
        }
        (*count)++;
        Jg(count,n);
    }
}

这个算法中的Jg算法即接受传入count的地址和需要计算的初始值n以及中间生成的n;

在内部判断完中间n之后在内部继续调用;

所以~算法好难~好好学吧~skrskr

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值