解题思路:
把两个式子转化成递归的形式,应该是这样:
An(i , n) = sin( i ± An( i + 1 , n)) // i 为奇数时符号为 '-' , 偶数时符号为 '+' , i == n时是最后一层递归,没有符号
Sn(i , n) = (Sn( i + 1 , n)) An(1 , n - i + 1) + i // i == n时是最后一层递归,没有最左边的括号内容
上面的 n - i + 1 是因为从外到里对An的调用是从 An ~ A1 ,而 i 是从 1 ~ n ,所以有 An(1, n - i + 1)
参考代码:
#include <bits/stdc++.h> using namespace std; void An(int i, int n) //函数An,i为起点,n为终点 { if (i > n) return; //递归终点i > n printf("sin(%d", i); //输出前半部分 if (i != n) //i != n时有符号 { if (i % 2 == 1) putchar('-'); //i为奇数输出 '-' else putchar('+'); //i为偶数输出 '+' } An(i + 1, n); //递归i + 1 putchar(')'); //输出后半部分 } void Sn(int i, int n) //函数Sn,i为起点,n为终点 { if (i > n) return; //递归终点i > n if (i != n) putchar('('); //i != n时有括号 Sn(i + 1, n); //递归i + 1 if (i != n) putchar(')'); //i != n时有括号 An(1, n - i + 1); //最后调用An printf("+%d", i); //输出后半部分 } int main() { int n; cin >> n; //输入n Sn(1, n); //调用Sn return 0; }
0.0分
0 人评分
2006年春浙江省计算机等级考试二级C 编程题(2) (C语言代码)浏览:503 |
幸运数 (C++代码)浏览:1309 |
局部变量作函数返回值的问题浏览:1028 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1496 |
Hello, world! (C语言代码)浏览:916 |
良心推荐——>题解1049:C语言程序设计教程(第三版)课后习题11.1 (C语言描述——简单明了,时间复杂度低)浏览:1318 |
【计算直线的交点数】 (C语言代码)浏览:984 |
printf基础练习 (C语言代码)浏览:2268 |
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:576 |
买不到的数目 (C语言代码)浏览:3134 |