You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用C语言实现奇偶交替递归检测函数及数字升序判断?

C语言实现正整数的数字逆序升序+奇偶交替判断

以下是满足需求的完整代码,包含三个指定函数,重点实现递归版的奇偶交替判断:

#include <stdio.h>
#include <stdbool.h>

// 确保输入为正整数
int getNumber() {
    int num;
    do {
        printf("请输入一个正整数: ");
        // 校验输入是否为合法正整数
    } while (scanf("%d", &num) != 1 || num <= 0);
    return num;
}

// 判断数字从右到左是否升序
bool isAscendingOrder(int n) {
    // 单个数字直接满足条件
    if (n < 10) {
        return true;
    }
    while (n >= 10) {
        // 取最后两位数字
        int last = n % 10;
        int secondLast = (n / 10) % 10;
        // 从右到左升序要求倒数第二位 < 最后一位(如9876的6<7<8<9)
        if (secondLast >= last) {
            return false;
        }
        // 去掉最后一位,继续判断剩余部分
        n /= 10;
    }
    return true;
}

// 递归判断数字是否奇偶交替
bool isAlternateNumber(int n) {
    // 递归终止条件:单个数字无相邻位,直接返回真
    if (n < 10) {
        return true;
    }
    // 获取最后两位数字
    int last_digit = n % 10;
    int prev_digit = (n / 10) % 10;
    // 判断当前最后两位奇偶性是否不同
    if ((last_digit % 2) == (prev_digit % 2)) {
        return false;
    }
    // 递归处理去掉最后一位后的数字,验证剩余部分的交替性
    return isAlternateNumber(n / 10);
}

int main() {
    int num = getNumber();
    bool isAsc = isAscendingOrder(num);
    bool isAlt = isAlternateNumber(num);
    
    if (isAsc && isAlt) {
        printf("%d 满足从右到左升序且奇偶交替的条件\n", num);
    } else {
        printf("%d 不满足条件\n", num);
        if (!isAsc) {
            printf("原因:数字从右到左不是升序\n");
        }
        if (!isAlt) {
            printf("原因:数字奇偶未交替\n");
        }
    }
    return 0;
}

函数细节说明

getNumber函数

通过循环强制校验输入:

  • 用scanf返回值判断输入是否为整数类型
  • 同时检查数值是否大于0,不满足则重新提示输入

isAscendingOrder函数

核心逻辑是从右到左逐位比对:

  • 每次取当前数字的最后两位,判断倒数第二位是否小于最后一位
  • 只要有一对不满足就直接返回false,循环到只剩一位时返回true

isAlternateNumber递归函数

递归核心是逐步缩小问题规模:

  1. 终止条件:数字小于10(仅一位)时,无相邻位需要比较,返回true
  2. 当前层判断:取最后两位,检查奇偶性是否不同(一奇一偶)
  3. 递归调用:若当前两位满足交替,去掉最后一位(数字除以10),递归验证剩余部分

举个验证示例:数字9876

  • 第一次调用:检查6和7(奇偶不同),递归处理987
  • 第二次调用:检查7和8(奇偶不同),递归处理98
  • 第三次调用:检查8和9(奇偶不同),递归处理9
  • 第四次调用:9<10,返回true,逐层回溯最终返回true

内容的提问来源于stack exchange,提问作者Yuval Yanay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 20:12:44