用c语言编写递归函数求小于等于n的所以正整数之和
时间: 2024-02-13 09:01:52 浏览: 150
好的,以下是用C语言编写的递归函数,可以求小于等于n的所有正整数之和:
#include <stdio.h>
int sum(int n) {
if (n == 1) {
return 1;
} else {
return n + sum(n-1);
}
}
int main() {
int n, result;
printf("请输入一个正整数n:");
scanf("%d", &n);
result = sum(n);
printf("1~%d的所有正整数之和为:%d\n", n, result);
return 0;
}
这个函数的思路是,当n等于1时,返回1;否则,返回n加上1到n-1的所有正整数之和,这个和可以通过递归调用sum()函数来得到。当n等于1时,递归结束,返回1。
相关问题
C语言编写递归函数求阶乘
在C语言中,递归函数可以用来求一个数的阶乘,阶乘是指从1乘到该数的所有正整数的积。递归函数的基本思想就是将大问题分解成小问题,直到问题简单到可以直接解决,然后逐步合并结果。以下是计算阶乘的典型递归函数示例:
#include <stdio.h>
// 定义递归函数求阶乘
unsigned long long factorial(int n) {
// 基础情况:0和1的阶乘都是1
if (n == 0 || n == 1)
return 1;
// 递归情况:n的阶乘等于n乘以(n-1)的阶乘
else
return n * factorial(n - 1);
}
int main() {
int num;
printf("请输入一个非负整数:");
scanf("%d", &num);
// 检查输入是否合法并打印阶乘结果
if (num >= 0) {
unsigned long long fact = factorial(num);
printf(" %d 的阶乘是 %llu\n", num, fact);
} else {
printf("错误!输入是非负整数。\n");
}
return 0;
}
用c语言编写递归函数,输出一个正整数是几位数。例如,输入1234,输出4
在C语言中,我们可以使用递归函数来计算一个正整数的位数。递归是一种解决问题的方法,通过将大问题分解成小问题的方式来逐步解决。对于这个问题,我们定义一个基本情况(如果数字为0),然后处理更一般的情况(数字大于0)。下面是一个简单的递归函数示例:
#include <stdio.h>
int countDigits(int num) {
// 如果num小于10,那么它就是一个一位数
if (num >= 10 && num <= 9) {
return 1;
}
// 否则,返回当前数字最后一位后的数字的位数加一
else {
return 1 + countDigits(num / 10);
}
}
int main() {
int input = 1234;
printf("The number %d has %d digits.\n", input, countDigits(input));
return 0;
}
这个countDigits
函数会递归地除以10并加上1,直到数字变为一位数。运行此程序,你会得到输入1234的位数是4。
相关推荐














