C语言 递归函数的一些测试

本文探讨了C语言中递归函数的概念,通过一个分解质因数的例子来说明递归的工作原理。作者起初对递归的执行顺序感到困惑,经过测试发现递归调用会在所有子调用完成后返回并执行后续语句。这种理解帮助作者逐步理清了递归的执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我经常会被一些看似复杂的结构混淆,静下心来想想,其实只不过是一种简单结构换了一种表现形式或者是结构特殊化了,它的本质是永远不会变的,按照以往的思路去思考,问题总是会带给你收获。

做这个题目之前之前对递归也不是太懂,还好遇见了你。
/题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

void item11(int num){
    int i,j;

    for(i=2;i<num;i++){
        if(num%i==0){
            printf("%d*",i);
            item11(num/i);
            printf("hahahahahaha");
            printf("%d\n",num);
            break;
        }       
    }
    if(i>=num)printf("%d",num);

}

item11(int num) 应该叫一个递归函数,我以前有一个疑惑:如果递归函数下面还有语句要执行的话,那么它会是一个什么情况呢?
是调用完一次递归函数就执行下一句吗?还是直接就不调用了。

这个测试的输出是 这里写图片描述

那我就可以判断 整个递归调用结束之后才会回来执行接下去的语句,哇,感觉好复杂啊,根本看不清为什么,脑子一片混乱。

然后我又写了几句代码

#include<stdio.h>

void test(){
    printf("Hello,World");
}
main(){
    test();
    printf("Hello,swfq");
}

这个我肯定知道啊, 先输出 Hello,World啊,等到test()执行完毕之后 在输出 Hello,swfq。

那为什么是从里往外开始调用的?(为什么从15到45到90)

#include<stdio.h>

void test(){
    printf("Hello,World");
    test1();
    printf("Hello,nicer");
}

void test1(){
    printf("Hello,wzjssss"); 
}
main(){
    test();
    printf("Hello,swfq");
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值