递归逆序输出一个数的错误

目的是想将1234按4 3 2 1输出,但从输出2的那一步就开始不正常了呜呜呜

#include <stdio.h>
void f(double num);

int main(void){
double num;
scanf("%lf",&num);
f(num);
}

void f(double num){
int k = (int) (num/10);

if(k==0){
    printf("%d\n",(int)num);
}else{

    printf( "%d\n",(int)((num/10-k)*10));
            
    f((double)k);
}

}

img

你好,递归方法已给出,望采纳!

int Reverse_order(int n)
{
    if(0 == n) //递归结束条件
        return n;
    printf("%d\n",n%10); //当前所求
    Reverse_order(n/10); //下一次的传值
    return 0;
}

首先double处理起来比较麻烦, 如果是1234这种整数最好是int.
如果一定要去处理小数, 可以试试把小数当成字符串读取然后处理会更好, 直接逆序输出就行

// 整数的方法
void f(int num){
    int k = num%10;
    printf("%d", k);
    if (k != num){
        f(num/10);
    }
}

浮点数精度问题,改成这样就对了

printf( "%.0f\n",((num/10.-k)*10));