📅  最后修改于: 2023-12-03 15:37:13.824000             🧑  作者: Mango
这是一个出现在国际空间研究组织 CS 2007 程序设计考试中的问题。该问题考察了程序员对递归和条件控制语句的理解能力。
给定一个正整数 $n$,编写一个递归函数来计算 $1+2+\cdots+n$ 的和。同时,该函数应该使用条件控制语句来检查输入是否为正整数。
输入参数如下:
返回一个整数,表示 $1+2+\cdots+n$ 的和。
如果输入不是正整数,则返回 -1
。
示例 1:
def sum_n(n):
if n <= 0:
return -1
elif n == 1:
return 1
else:
return n + sum_n(n-1)
上述代码定义了一个名为 sum_n
的函数,该函数使用递归计算 $1+2+\cdots+n$ 的和,并使用条件控制语句来检查输入是否为正整数。
首先,该函数检查输入参数 $n$ 是否小于等于 $0$,如果是,则返回 -1
。
接着,该函数检查输入参数 $n$ 是否等于 $1$,如果是,则返回 $1$。这是递归函数的基本情况。
否则,该函数计算 $n + sum_n(n-1)$,并返回结果。这是递归函数的递推情况。递归函数的结束条件是 $n=1$。