range,map,sum

题目描述

输入n, 求y1=1!+3!+...m!(m是小于等于n的最大奇数) y2=2!+4!+...p!(p是小于等于n的最大偶数)。 
输入描述:
每组输入包括1个整数:n
输出描述:
可能有多组测试数据,对于每组数据,
输出题目要求的y1和y2

Python实现:
 1 def temp(n):
 2     if n>0:
 3         return n*temp(n-1)
 4     else:
 5         return 1
 6 
 7 def result(n):
 8     yy1 = range(1,n+1,2)
 9     yy2 = range(2,n+1,2)
10     y1 = map(temp,yy1)
11     y2 = sum(map(temp,yy2))
12     print y1,y2
13     
14 while True:
15     try:
16         n = int(input())
17         result(n)
18     except:
19         break
View Code

主要应用到Python的map和sum,map是Python内置的高阶函数,它接收一个函数f和一个list,通过map(f,list)把f依次作用在list的每个元素上,得到一个新的list并返回。

 

Java实现:

 1 public class Factorial {
 2 
 3     public static void main(String[] args) {
 4         Scanner sc = new Scanner(System.in);
 5         while(sc.hasNext()){
 6             int n=sc.nextInt();
 7             int y1=0,y2=0;
 8             for(int i=2;i<n;i+=2){
 9                 y2+=f(i);
10             }
11             for(int i=1;i<=n;i+=2){
12                 y1+=f(i);
13             }
14             System.out.println(y1 + " "+ y2);
15         }
16     }
17     public static int f(int n){
18         if (n==0) return 1;
19         if (n==1) return 1;
20         return f(n-1)*n;
21     }
22         
View Code

 

posted @ 2017-04-20 10:05  一罐热茶  阅读(296)  评论(2编辑  收藏  举报