如果你想用 C 語(yǔ)言來(lái)求出這個(gè)函數(shù)的值,你可以用一個(gè) for 循環(huán)來(lái)枚舉每一項(xiàng),并用一個(gè)變量來(lái)累加每一項(xiàng)的值。代碼如下
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為成百上千客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為宏偉企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站制作,宏偉網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
#include stdio.h
#include math.h
int main()
{
int n = 10; // 定義一個(gè)變量來(lái)表示函數(shù)中的 n
double result = 0; // 定義一個(gè)變量來(lái)表示函數(shù)的值
for (int i = 1; i = 2 * n - 1; i += 2) // 枚舉每一項(xiàng)
{
result += 2.0 / factorial(i); // 累加每一項(xiàng)的值
}
printf("f(%d) = %f\n", n, result); // 輸出函數(shù)的值
return 0;
}
// 定義一個(gè)函數(shù)來(lái)計(jì)算 n 的階乘
double factorial(int n)
{
double result = 1;
for (int i = 1; i = n; i++)
{
result *= i;
}
return result;
}
請(qǐng)注意,上面的代碼中還定義了一個(gè)函數(shù) factorial,用于計(jì)算 n 的階乘。你也可以使用 C 語(yǔ)言內(nèi)置的函數(shù)來(lái)計(jì)算階乘,代碼如下:
#include stdio.h
#include math.h
int main()
{
int n = 10; // 定義一個(gè)變量來(lái)表示函數(shù)中的 n
double result = 0; // 定義一個(gè)變量來(lái)表示函數(shù)的值
for (int i = 1; i = 2 * n - 1; i += 2) // 枚舉每一項(xiàng)
{
result += 2.0 / tgamma(i + 1); // 累加每一項(xiàng)的值
}
printf("f(%d) = %f\n", n, result); // 輸出函數(shù)的值
return 0;
}
這是求最大公約數(shù)的函數(shù),至于分?jǐn)?shù)化簡(jiǎn)就將分母分子同時(shí)除以最大公約數(shù)就好
int?gys(int?a,int?b)
{
while(a!=b)
{
if(ab)a-=b;
else?b-=a;
}
return?b;
}
main()
{int i=0,j,num;
float NUM;
float m,n,p,q; /*m=a,n=c,p=g,q=t*/
float ta,tg,tc,tt;
float A,C,G,T;
float b,e; /***********定義變量************/
float TA,TG,TC,TT;
//char string1[80]="tcttcagatgtaacacttaaggctatcctc"; /***********這個(gè)在程序中沒(méi)有用到************/
//char string2[80]="attgtacgtcgatcg";
char string[][80]={"tcttcagatgtaacacttaaggctatcctc",
"attgtacgtcgatcg",
"attgtacgtcgatcg attgtacgtcgatcg", /***********新的序列添加到這里************/
"" /***********以空字符串為結(jié)束************/
};
FILE*fp;
fp=fopen("69.txt","w");
for (j=0;jstring[j][0];j++) /*********這里改一下 判斷************/
{
i=m=n=p=q=num = 0;
while(string[j][i]!='\0') /*to count the total*/
{ num++;
i++;
}
for(i=0;inum;i++)
{
switch(string[j][i])
{ /*to count a g c t*/
case 'a':m++;break;
case 'g':n++;break;
case 'c':p++;break;
case 't':q++;break;
default:break;
}
}
A=m/num;G=n/num;C=p/num;T=q/num;
if((G+C)!= 0) /***********計(jì)算是否有非0的除數(shù)************/
b=100*(G-C)/(G+C);
else
b = 0;
if((A+T))
e=100*(A-T)/(A+T);
else
e = 0;
fprintf(fp,"A=%f,G=%f,C=%f,b=%f,\n,e=%f,T=%f",A,G,C,T,b,e); /***********寫(xiě)文件************/
for(i=0;inum-1;i++)
{ /*to count aa ag ac at*/
switch(string[j][i])
{
case 't': switch(string[j][i+1])
現(xiàn)有一鏈表,有若干個(gè)結(jié)點(diǎn),沒(méi)個(gè)結(jié)點(diǎn)有ID[ N]的數(shù)組ID[0]存著ID 數(shù)組中存的數(shù)字的長(zhǎng)度,
比如:
結(jié)點(diǎn)P1- ID[0]=2 是 3 14
結(jié)點(diǎn)P2 -ID[0]=2 是 14 15
結(jié)點(diǎn)P3- ID[0]=2 是 15 22
可以用下面的表描述
14 15
P1 1
P2 1 1
P3 1
注:P-ID[0]為2的n次,肯定是2,4,8,16,32,………..這樣的數(shù)字
注: 14 15 是針對(duì)的數(shù)字,在這里,P2,P1并p3都可以“覆蓋” 14 15兩個(gè)數(shù)字,
但是 很明顯P2單獨(dú)一個(gè)可以“覆蓋”14 15 兩個(gè)針對(duì)數(shù)字,
所以,我們的算法就是要找出可以 滿足“覆蓋”并且項(xiàng)數(shù)最少的單個(gè) P_或者項(xiàng)數(shù)最少的組合!
還有,表里每個(gè)列都會(huì)有兩個(gè)或兩個(gè)以上的1的,因?yàn)椋蒕-M方法化簡(jiǎn),前面的步驟已經(jīng)將一個(gè)1的列過(guò)濾了的!
又如:
結(jié)點(diǎn)P1 ID[0]=2 是 13 14
結(jié)點(diǎn)P2 ID[0]=4 是 14 15 22 24
結(jié)點(diǎn)P3 ID[0]=2 是 14 16
結(jié)點(diǎn)P4 ID[0]=2 是 13 16
13 14 15 16
P1 1 1
P2 1 1
P3 1 1
P4 1 1
P1并P3; P2并P4
都是滿足條件的算法結(jié)果。
------------------------------------------------------------ ----------------------------------------------------------
以上其實(shí)是Q-M方法化簡(jiǎn)邏輯函數(shù)的最后一步,由前面的算法產(chǎn)生的PN的鏈表的長(zhǎng)度是不確定的(也就是P1,P2,P3,………具體個(gè)數(shù),每次針對(duì)不同邏輯函數(shù)會(huì)有不同的個(gè)數(shù))
13 14 15 16 這樣的針對(duì)項(xiàng)的個(gè)數(shù)也不確定的,(也就是針對(duì)項(xiàng)的具體個(gè)數(shù),每次針對(duì)不同邏輯函數(shù)也會(huì)有不同的個(gè)數(shù))
本人的算法,寫(xiě)到此處后,對(duì)于這個(gè)問(wèn)題暫時(shí)找不到合適的有技巧的方法 去解決,希望大家共同合作,給我點(diǎn)意見(jiàn),思路,或者偽代碼,都可以,本人是學(xué)C 的是類C 的偽碼更好一點(diǎn),謝謝,諸位??!