当前位置: 首页 > news >正文

C语言常见推理题


#include <string.h>

// 1. 阶乘计算
int factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

// 2. 斐波那契数列
int fibonacci(int n) {
    if (n <= 1) return n;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

// 3. 数组求和
int array_sum(int arr[], int n) {
    if (n <= 0) return 0;
    return arr[n - 1] + array_sum(arr, n - 1);
}

// 4. 字符串反转
void reverse_string(char *str, int start, int end) {
    if (start >= end) return;
    char temp = str[start];
    str[start] = str[end];
    str[end] = temp;
    reverse_string(str, start + 1, end - 1);
}

// 5. 十进制转二进制
void decimal_to_binary(int n) {
    if (n > 1) decimal_to_binary(n / 2);
    printf("%d", n % 2);
}

// 6. 汉诺塔问题
void hanoi(int n, char from, char to, char aux) {
    if (n == 1) {
        printf("移动盘子 1 从 %c 到 %c\n", from, to);
        return;
    }
    hanoi(n - 1, from, aux, to);
    printf("移动盘子 %d 从 %c 到 %c\n", n, from, to);
    hanoi(n - 1, aux, to, from);
}

// 7. 判断回文字符串
int is_palindrome(char *str, int start, int end) {
    if (start >= end) return 1;
    if (str[start] != str[end]) return 0;
    return is_palindrome(str, start + 1, end - 1);
}

// 8. 最大公约数
int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

// 9. 二分查找
int binary_search(int arr[], int left, int right, int target) {
    if (left > right) return -1;
    int mid = left + (right - left) / 2;
    if (arr[mid] == target) return mid;
    if (arr[mid] > target) return binary_search(arr, left, mid - 1, target);
    return binary_search(arr, mid + 1, right, target);
}

int main() {
    printf("=== C语言递归编程示例 ===\n\n");
    
    // 测试阶乘
    printf("1. 5的阶乘: %d\n", factorial(5));
    
    // 测试斐波那契
    printf("2. 第8个斐波那契数: %d\n", fibonacci(8));
    
    // 测试数组求和
    int arr[] = {1, 2, 3, 4, 5};
    printf("3. 数组求和: %d\n", array_sum(arr, 5));
    
    // 测试字符串反转
    char str[] = "hello";
    printf("4. 原字符串: %s\n", str);
    reverse_string(str, 0, strlen(str) - 1);
    printf("   反转后: %s\n", str);
    
    // 测试十进制转二进制
    printf("5. 10的二进制: ");
    decimal_to_binary(10);
    printf("\n");
    
    // 测试汉诺塔
    printf("6. 3层汉诺塔解决方案:\n");
    hanoi(3, 'A', 'C', 'B');
    
    // 测试回文判断
    char palindrome[] = "racecar";
    printf("7. '%s' 是回文: %s\n", palindrome, 
           is_palindrome(palindrome, 0, strlen(palindrome) - 1) ? "是" : "否");
    
    // 测试最大公约数
    printf("8. GCD(48, 18): %d\n", gcd(48, 18));
    
    // 测试二分查找
    int sorted_arr[] = {1, 3, 5, 7, 9, 11, 13};
    int target = 7;
    int result = binary_search(sorted_arr, 0, 6, target);
    printf("9. 在排序数组中查找 %d: %s\n", target, 
           result != -1 ? "找到" : "未找到");
    
    return 0;
}
 

http://www.dtcms.com/a/592872.html

相关文章:

  • leetcode 3542. 将所有元素变为 0 的最少操作次数 中等
  • 一文掌握,sward安装与配置
  • Supabase 开源 BaaS 平台的技术内核与实践指南
  • YOLOv5+DeepSORT目标检测
  • 通过Prometheus对GPU集群进行监控以及搭建(小型集群)
  • 【datawhale】Agentic AI学习笔记
  • 江苏国龙翔建设公司网站找工作网站建设
  • 网站建设及在线界面设计
  • Aloha浏览器 7.10.1 |私人浏览器,极速上网,资源嗅探
  • 多Agent协同-详解
  • Spring Boot 数据库操作实战:MyBatis 让 CRUD 像 “查奶茶库存” 一样简单
  • 电脑五笔打字入门口诀:3天学会五笔打字拆字
  • 自动驾驶中的B样条轨迹及B样条<->贝塞尔转换实现避障
  • 南阳市做网站网站开发是什么专业百度
  • 做外包的网站有哪些问题最好玩的网站
  • 阿尔及尔至广州直飞航线成功首航
  • 太原网站建设找山西云起时北京做网站优化的公司
  • 价值优先,敏捷致胜:超越“数据治理优先”的AI实施新范式
  • 2025年下半年软考高级系统架构师题目和答案
  • 基于多组学谱的疾病亚型分型与样本分类
  • 怎么做免费网站被收录营销推广的目标
  • java使用poi-tl模版+vform自定义表单生成word
  • MATLAB实现CNN(卷积神经网络)图像边缘识别
  • PDF 智能翻译工具:基于硅基流动 API实现
  • 中卫建设厅网站企业网站中( )是第一位的。
  • 八股已死、场景当立(场景篇-分布式定时任务篇)
  • Sources中main、vendors、runtime、polyfills、scripts这些是什么?
  • webpack+vite,vue如何定义公共环境变量?
  • SourceMap知识点
  • iPhone Delta模拟器游戏资源包合集中文游戏ROM+BIOS+Delta皮肤附游戏导入教程