标题:关于简单的递归问题
取消只看楼主
Remained
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2022-2-21
结帖率:100%
已结贴  问题点数:15 回复次数:3 
关于简单的递归问题
程序代码:
#include<stdio.h>
void print(int n)//
{
    if(n>9)
    {
        print(n/10); 
    }
    printf("%d、",n%10);
}
int main()
{

//函数 逐个打印 
    int num = 0;
    printf("请随意输入一个数字,我将会逐个打印它\n"); //当我输入0到(2^31-1)时都可以正常打印,但输入2^32打印出-8 ;
                                                      //2^32+1打印出-7;2^32+2打印出-6依次类推 到2^32次方+8 打印出0                                           
    scanf("%d",&num);                                 //2^32次方+9 打印出-9;2^32次方+10 打印出 -8
    print(num);                                       //我的推测是一个整形变量存储的数字大小上限,但是为什么会循环?求个大神解答下这种现象的原因
    
    return 0; 

} 
//拓展____ 
//堆区  :动态开辟的内存 malloc calloc 
//静态区:全局变量 static修饰的变量 
搜索更多相关主题的帖子: 打印 num 递归 输入 int 
2022-02-22 18:14
Remained
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2022-2-21
得分:0 
回复 2楼 rjsp
修改后我尝试了下, 我输入了2147483648(2的^32次方)  printf可以打印 但是函数 只能返回一个-8  不太懂为什么会这样
2022-02-23 10:01
Remained
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2022-2-21
得分:0 
回复 5楼 rjsp
想问的问题是后者,刚看4楼做了解释,已经搞明白了 谢谢大哥耐心回复
2022-02-23 18:07
Remained
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2022-2-21
得分:0 
回复 4楼 不会游泳的虾
懂了! 感谢!
2022-02-23 18:08



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508402-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016024 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved